手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

blade模板用法123

1、component和include的区别是啥

如果你不用slot。。。那component和include真没啥区别,而且component还是块级调用。而include是行级(可以少写一个@endinclude,不是挺好?)
 
2、includeIf includeWhen include ....应该在什么时候调用
如果你有一堆逻辑判断但不知道怎么拆,或者说觉得放在一页里面比较烦,就用这些来进行简单的区分吧
比如你不知道模板是不是存在,就用includeIf(但这个逻辑很妖,你自己写的代码你不知道它存不存在?)
includeFirst,是指定多个模板,当一个不存在就用下一个。这个不是和includeIf一样?你自己写的你会不知道?
所以。感觉有用的也就includeWhen了。根据逻辑判断来调用相应的子模板
 
3、怎么扩展自己的方法?
不太建议,但如果真要扩展,现阶段已经很容易了,比如我在自己的Yii中就是这样:
XML/HTML代码
  1. $this->blade->getCompiler()  
  2.             ->directive('config', function($environment) {  
  3.                 list($key, $defaultValue) = explode(",", $environment . ",", 2);  
  4.                 $environment = trim($key, "\"'");  
  5.                 return Configure::get($environment, $defaultValue != "," ? rtrim($defaultValue, ",") : null);  
  6.             });  
然后在模板里的用法就是
a、@config(abc),获取Yii::$app->params['abc']
b、@config(abc.def) ,获取Yii::$app->params['abc']['def']
c、@config(abc,123),如果没有定义Yii::$app->params['abc'],就返回默认值123
 
4、如果想用blade模板自带的@csrf @method,得自己实现csrf_field , method_field方法(如果你不实现就直接用,会报这两个方法不存在D)
 
 

搞定:Yii2+blade+vue+pjax

 如题,利用laravel-mix进行开发。HTML页面的blade,基本上只含主体结构 。具体的页面全部用vue加载(当成一个个的component)

这样就真正完全利用了vue的各种组件,然后也能享受PHP的变量开发,只是这样就得一个个的加载页面了(每次都得加载app.js,一个app.js可是将近2M的)
所以,加载vue-pjax-adapter。利用pjax的特性。少加载很多内容。但这个插件,原来也是for laravel的。用了之后,发现网址不会变了。看了下代码。他的pushState的更换居然是利用response.headers中的x-pjax-url,于是在Yii的controller->afterAction中增加:response->headers->set('x-pjax-url',url::current),一切都搞定
 
在开发的时候,使用mix文件的browseSync+webpack的watch。改动后自动刷新页面。也是一个不算爽的爽功能了
 
减轻不少压力。在没有专业前端的情况下也能享受VUE的开发乐趣(其实就是不用vuex,vue-router等)

server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

在服务器执行composer update的时候报了这个错:

XML/HTML代码
  1. server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none  
主要还是签名的SSL证书可能有点问题,所以这时候有个偷懒的办法:
XML/HTML代码
  1. git config --global http.sslverify false  
或者你也可以这样:
XML/HTML代码
  1. export GIT_SSL_NO_VERIFY=1  
然后就OK了
 
 

Tags: composer

facebook webdriver headless

下载了webdriver后,每次调用的时候,都会弹出一个chrome的界面,而且处理完后还不会自动关闭(当然可能是因为我的姿势问题),所以看了一下facebook 的webdriver,嗯配合chromedriver,很多事情就都解决了!

上一段测试代码:

PHP代码
  1. $options = DesiredCapabilities::chrome();  
  2.   
  3. $chrome = new ChromeOptions();  
  4. $chrome->addArguments(['--headless']);  
  5. $options->setCapability(ChromeOptions::CAPABILITY,$chrome );  
  6.   
  7.   
  8. $driver = RemoteWebDriver::create('http://localhost:9515'$options);  
  9. $driver->get('http://www.baidu.com');  
  10. $result = $driver->findElement(WebDriverBy::id('wrapper'))  
  11.                  ->getText();  
  12. echo $result;  

还确实是比较方便。我要测试一下时间。然后和phantomjs做一下对比。我想应该不会太慢吧

 

 

转的关于公众号接收信息的返回

 以下是内容:

 

 
XML/HTML代码
  1. 首次访问时post的数据   
  2. 获取ticket访问时get的数据($encryptMsg) 
  3. {"signature":"bb539c3ecaddf06040912a836cdeb2060f649b1a","timestamp":"1491385757","nonce":"776481090","encrypt_type":"aes","msg_signature":"472008a1054eab89651ae9c484395e4e54abb01e","action":"get_ticket"}   

  4. 消息接入时get的数据($param) 
  5. {"action":"news","amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;b":"/wx570bc396a51b8ff8","signature":"550a39d2ffa8dbe0b0f8f6cfadd8a9b8981b3752","timestamp":"1491385766","nonce":"947166308","openid":"ozy4qt5QUADNXORxCVipKMV9dss0","encrypt_type":"aes","msg_signature":"d67c434cb7e54a0b51b2cdceba38650ea62a35a2"}   

  6. 消息接入时get的数据($param) 
  7. {"action":"news","amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;b":"/wx570bc396a51b8ff8","signature":"595e8376b3587a8d68c68132417931b6fd0b8f9d","timestamp":"1491385775","nonce":"898963343","openid":"ozy4qt5QUADNXORxCVipKMV9dss0","encrypt_type":"aes","msg_signature":"1d6291da6617638c95d4be800d8394547a8d4137"}   

  8.  消息接入时get的数据($param)
  9.  {"action":"news","amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;b":"/wx570bc396a51b8ff8","signature":"72e0b354fd7b6643335d1035471617441e57e945","timestamp":"1491385783","nonce":"1115275135","openid":"ozy4qt5QUADNXORxCVipKMV9dss0","encrypt_type":"aes","msg_signature":"3d16bee6896984fbf2ba333ef2be389739ddd30a"}    

  10. 获取ticket访问时get的数据($encryptMsg) 
  11. {"signature":"fa4b87ee9574913ac68bd1044c35a48a1bb41a40","timestamp":"1491385789","nonce":"429149520","encrypt_type":"aes","msg_signature"     :"9626625a665c03f128462ace8a5dff0cf2c5d0f8","action":"get_ticket"}   

  12.  通过$encryptMsg与$param获取 component_verify_ticket
  13.  ticket@@@bYIJwVAxqf75BhEVRNhaaf1KTit5zxiqbZ5KR7xJumzniEEy6DTIWHeic1-L_z7LuhPwwSNLm_V_8hkyRYX-PQ 

  14. 通过$encryptMsg与$param验证微信接入测试请求($data)
  15.  {"ToUserName":"gh_3c884a361561","FromUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","CreateTime":"1491385765","MsgType":"text","Content":"QUERY_AUTH_CODE:queryauthcode@@@mFZ_yC83hgDZhf-s6pL6UGloyMYzH8MTCEQddsa8U5ceEze4zflgNNk4sU1kkGUkZn37-Su4t9C5gaR09gjkKQ","MsgId":"6405453086801493549"} {"ToUserName":"gh_3c884a361561","FromUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","CreateTime":"1491385774","MsgType":"text","Content":"TESTCOMPONENT_MSG_TYPE_TEXT","MsgId":"6405453125456199215"} {"ToUserName":"gh_3c884a361561","FromUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","CreateTime":"1491385783","MsgType":"event","Event":"LOCATION","Latitude":"111.000000","Longitude":"222.000000","Precision":"333.000000"}   

  16. 微信接入测试回复 $data 
  17. {"ToUserName":"gh_3c884a361561","FromUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","CreateTime":"1491385765","MsgType":"text","Content":"QUERY_AUTH_CODE:queryauthcode@@@mFZ_yC83hgDZhf-s6pL6UGloyMYzH8MTCEQddsa8U5ceEze4zflgNNk4sU1kkGUkZn37-Su4t9C5gaR09gjkKQ","MsgId":"6405453086801493549"} {"ToUserName":"gh_3c884a361561","FromUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","CreateTime":"1491385774","MsgType":"text","Content":"TESTCOMPONENT_MSG_TYPE_TEXT","MsgId":"6405453125456199215"} {"ToUserName":"gh_3c884a361561","FromUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","CreateTime":"1491385783","MsgType":"event","Event":"LOCATION","Latitude":"111.000000","Longitude":"222.000000","Precision":"333.000000"}   

  18. 1、通过$data获取$query_auth_code
  19.  queryauthcode@@@mFZ_yC83hgDZhf-s6pL6UGloyMYzH8MTCEQddsa8U5ceEze4zflgNNk4sU1kkGUkZn37-Su4t9C5gaR09gjkKQ
  20.  
  21.  2、通过$data获取$access_token 
  22. dZiS58MkUvLOkSBvX2SDu6-P6hGqN5GJj8T8jOlhszo80KuwMgytZb2GIoNlsUMeSpM_WLBMc65KDG80h2-zjh-8PWdE2br8Pchdk6MFJjg13vCjhDVyPyZ3_1XbTmg2GSWgADDLXB 
  23.  
  24. 微信接入测试回应 回应数据 
  25. 1、{"ToUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","FromUserName":"gh_3c884a361561","CreateTime":1491385775,"MsgType":"text","Content":"TESTCOMPONENT_MSG_TYPE_TEXT_callback","FuncFlag":0} 
  26. 2、{"ToUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","FromUserName":"gh_3c884a361561","CreateTime":1491385783,"MsgType":"text","Content":"LOCATIONfrom_callback","FuncFlag":0}   
  27.  
  28. 解密回应数据 
  29. 1、\n\n\n1491385775\n\n
  30. 2、\n\n\n1491385783\n\n   
  31.  
  32. 微信接入测试请求 
  33. {"ToUserName":"gh_3c884a361561","FromUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","CreateTime":"1491385765","MsgType":"text","Content":"QUERY_AUTH_CODE:queryauthcode@@@mFZ_yC83hgDZhf-s6pL6UGloyMYzH8MTCEQddsa8U5ceEze4zflgNNk4sU1kkGUkZn37-Su4t9C5gaR09gjkKQ","MsgId":"6405453086801493549"} 
  34. {"ToUserName":"gh_3c884a361561","FromUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","CreateTime":"1491385774","MsgType":"text","Content":"TESTCOMPONENT_MSG_TYPE_TEXT","MsgId":"6405453125456199215"} 
  35. {"ToUserName":"gh_3c884a361561","FromUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","CreateTime":"1491385783","MsgType":"event","Event":"LOCATION","Latitude":"111.000000","Longitude":"222.000000","Precision":"333.000000"}  
  36.  
  37.  获取微信开放平台授权信息 
  38. {"authorization_info":{"authorizer_appid":"wx570bc396a51b8ff8","authorizer_access_token":"dZiS58MkUvLOkSBvX2SDu6-P6hGqN5GJj8T8jOlhszo80KuwMgytZb2GIoNlsUMeSpM_WLBMc65KDG80h2-zjh-8PWdE2br8Pchdk6MFJjg13vCjhDVyPyZ3_1XbTmg2GSWgADDLXB","expires_in":7200,"authorizer_refresh_token":"refreshtoken@@@5lb5Jq2giPuJ0gjjyD9J_3y7VhyVgVt6kIuYlGkATFg","func_info":[{"funcscope_category":{"id":1}},{"funcscope_category":{"id":15}},{"funcscope_category":{"id":4}},{"funcscope_category":{"id":7}},{"funcscope_category":{"id":2}},{"funcscope_category":{"id":3}},{"funcscope_category":{"id":11}},{"funcscope_category":{"id":6}},{"funcscope_category":{"id":5}},{"funcscope_category":{"id":8}},{"funcscope_category":{"id":13}},{"funcscope_category":{"id":9}},{"funcscope_category":{"id":10}},{"funcscope_category":{"id":12}}]}}   
  39.  
  40. ComponentAccessToken 
  41. ticket:PrJUyVJYEAlQ75bCbBLk4DkdHefqRM4r_ZV7ivJuahmG1Hap41QHJQ9MVsY4JOdlp21dR7gmUxuUa4eeTM8D1az4fhY8yYjBBGkC7KLyvSEGclB0vgza1xzk65m0GNAQVGMfABAFQW  
 COPY自:http://blog.lwp8800.com/news/detail.html?id=22