1、component和include的区别是啥
如果你不用slot。。。那component和include真没啥区别,而且component还是块级调用。而include是行级(可以少写一个@endinclude,不是挺好?)
2、includeIf includeWhen include ....应该在什么时候调用
如果你有一堆逻辑判断但不知道怎么拆,或者说觉得放在一页里面比较烦,就用这些来进行简单的区分吧
比如你不知道模板是不是存在,就用includeIf(但这个逻辑很妖,你自己写的代码你不知道它存不存在?)
includeFirst,是指定多个模板,当一个不存在就用下一个。这个不是和includeIf一样?你自己写的你会不知道?
所以。感觉有用的也就includeWhen了。根据逻辑判断来调用相应的子模板
3、怎么扩展自己的方法?
不太建议,但如果真要扩展,现阶段已经很容易了,比如我在自己的Yii中就是这样:
XML/HTML代码
- $this->blade->getCompiler()
- ->directive('config', function($environment) {
- list($key, $defaultValue) = explode(",", $environment . ",", 2);
- $environment = trim($key, "\"'");
- return Configure::get($environment, $defaultValue != "," ? rtrim($defaultValue, ",") : null);
- });
然后在模板里的用法就是
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)
如题,利用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等)
在服务器执行composer update的时候报了这个错:
XML/HTML代码
- server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
主要还是签名的SSL证书可能有点问题,所以这时候有个偷懒的办法:
XML/HTML代码
- git config --global http.sslverify false
或者你也可以这样:
XML/HTML代码
- export GIT_SSL_NO_VERIFY=1
然后就OK了
下载了webdriver后,每次调用的时候,都会弹出一个chrome的界面,而且处理完后还不会自动关闭(当然可能是因为我的姿势问题),所以看了一下facebook 的webdriver,嗯配合chromedriver,很多事情就都解决了!
上一段测试代码:
PHP代码
- $options = DesiredCapabilities::chrome();
-
- $chrome = new ChromeOptions();
- $chrome->addArguments(['--headless']);
- $options->setCapability(ChromeOptions::CAPABILITY,$chrome );
-
-
- $driver = RemoteWebDriver::create('http://localhost:9515', $options);
- $driver->get('http://www.baidu.com');
- $result = $driver->findElement(WebDriverBy::id('wrapper'))
- ->getText();
- echo $result;
还确实是比较方便。我要测试一下时间。然后和phantomjs做一下对比。我想应该不会太慢吧
以下是内容:
XML/HTML代码
- 首次访问时post的数据
- 获取ticket访问时get的数据($encryptMsg)
- {"signature":"bb539c3ecaddf06040912a836cdeb2060f649b1a","timestamp":"1491385757","nonce":"776481090","encrypt_type":"aes","msg_signature":"472008a1054eab89651ae9c484395e4e54abb01e","action":"get_ticket"}
- 消息接入时get的数据($param)
- {"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"}
- 消息接入时get的数据($param)
- {"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"}
- 消息接入时get的数据($param)
- {"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"}
- 获取ticket访问时get的数据($encryptMsg)
- {"signature":"fa4b87ee9574913ac68bd1044c35a48a1bb41a40","timestamp":"1491385789","nonce":"429149520","encrypt_type":"aes","msg_signature" :"9626625a665c03f128462ace8a5dff0cf2c5d0f8","action":"get_ticket"}
- 通过$encryptMsg与$param获取 component_verify_ticket
- ticket@@@bYIJwVAxqf75BhEVRNhaaf1KTit5zxiqbZ5KR7xJumzniEEy6DTIWHeic1-L_z7LuhPwwSNLm_V_8hkyRYX-PQ
- 通过$encryptMsg与$param验证微信接入测试请求($data)
- {"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"}
- 微信接入测试回复 $data
- {"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"}
- 1、通过$data获取$query_auth_code
- queryauthcode@@@mFZ_yC83hgDZhf-s6pL6UGloyMYzH8MTCEQddsa8U5ceEze4zflgNNk4sU1kkGUkZn37-Su4t9C5gaR09gjkKQ
-
- 2、通过$data获取$access_token
- dZiS58MkUvLOkSBvX2SDu6-P6hGqN5GJj8T8jOlhszo80KuwMgytZb2GIoNlsUMeSpM_WLBMc65KDG80h2-zjh-8PWdE2br8Pchdk6MFJjg13vCjhDVyPyZ3_1XbTmg2GSWgADDLXB
-
- 微信接入测试回应 回应数据
- 1、{"ToUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","FromUserName":"gh_3c884a361561","CreateTime":1491385775,"MsgType":"text","Content":"TESTCOMPONENT_MSG_TYPE_TEXT_callback","FuncFlag":0}
- 2、{"ToUserName":"ozy4qt5QUADNXORxCVipKMV9dss0","FromUserName":"gh_3c884a361561","CreateTime":1491385783,"MsgType":"text","Content":"LOCATIONfrom_callback","FuncFlag":0}
-
- 解密回应数据
- 1、\n\n\n1491385775\n\n
- 2、\n\n\n1491385783\n\n
-
- 微信接入测试请求
- {"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"}
-
- 获取微信开放平台授权信息
- {"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}}]}}
-
- ComponentAccessToken
- ticket:PrJUyVJYEAlQ75bCbBLk4DkdHefqRM4r_ZV7ivJuahmG1Hap41QHJQ9MVsY4JOdlp21dR7gmUxuUa4eeTM8D1az4fhY8yYjBBGkC7KLyvSEGclB0vgza1xzk65m0GNAQVGMfABAFQW
COPY自:http://blog.lwp8800.com/news/detail.html?id=22