最近使用laravel5.6做了博客项目,其中碰到了一些问题,现在总结一下:(基础学习篇)
1、laravel的下载
①手动下载安装包,到laravel官方网站下载即可
②通过composer下载,安装composer之后,通过命令下载laravel,命令在laravel官网都可以看到(composer create-project --prefer-dist laravel/laravel blog)
2、本地域名配置
①打开httpd.conf,开启rewrite和vhost配置项,如下:
(LoadModule rewrite_module modules/mod_rewrite.so);
(LoadModule vhost_alias_module modules/mod_vhost_alias.so);
(Include conf/extra/httpd-vhosts.conf)。
并修改
<Directory "D:/phpStudy/PHPTutorial/Apache/cgi-bin">
AllowOverride all
Options None
Require all granted
</Directory>
②在修改vhost第二个配置项后会在Apacheconfextra生成httpd-vhosts.conf文件,添加虚拟域名如下
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "D:/****/"
ServerName ****
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>
③修改电脑系统文件hosts,添加虚拟域名,路行为(C:WindowsSystem32driversetc),添加虚拟域名 127.0.0.1 ****
注:在配置的过程中,如果怕修改错误导致文件不能使用,可以先备份在修改,此外修改完成后,需要重启Apache才能访问,域名后面需要加上 '/',否则会被当做搜索条件。
3、路由命名
Route::group(['as' => 'admin::'], function () { Route::get('dashboard', ['as' => 'dashboard', function () { } ]); });
Route::get('/test', 'AdminIndexController@index')->name('profile');
路由命名可以直接通过Route(‘profile’)访问路由的地址
注:路由传参的时候需要加上{},若为可选参数加上?,可以对参数进行限制,如下
// Route::get('reg/{id}', function ($i) {
// return 'User '.$i;
// })->where(['id'=>'[0-9]+']);
4、artisan创建控制器和model
php artisan make:controller IndexController;
php artisan make:model UserModel;
直接创建分别会生成在Controllers和App目录下,如果自己创建了文件夹,可以加上路径,例如:
php artisan make:model Http/Model/UserModel;则直接在App/Http/Model/UserModel/文件夹下
5、模板传参
单个变量或者数组通过with('a',$a)进行传递,当传递多个参数时,使用compact进行传参,格式如return view('myview',compact('x','y'));x、y可以是数组也可以是变量
注意:在使用back()传递参数时,总是获取不到信息,原因是学习过程参考的laravel5.2版本的视频教程,在更新中web中间件已经自动加载,不需要重复加载,导致session变量无法存储,最终没能获取到值,解决办法,去掉web中间件。
6、更换电脑访问laravel,报403错误,不允许访问地址,打开了phpstudy允许目录列表,解决了问题。问题出现在vhosts-ini文件中,修改之后正常访问。
7、使用postman模拟访问方式时,总是报错页面过期再试一次,是由于laravel的csrf验证导致无法通过,解决办法在VerifyToken.php文件中,加上需要访问的地址。
8、在使用artisan命令创建控制器时,总报错:unable to detect application namespace;查了好多网站,最终发现所有答案都是在composer.json文件中多了逗号,于是查看conposer.json文件,发现之前学习备注了配置的用途,删掉之后,artisan命令可以正常使用。
创建命令的另一个报错:warning:require(E:.....www..../vendor/autoload.php):failed to open stream; fatal :error require( )。解决办法:进入根目录执行命令composer update。可能是缺少文件导致错误
9、laravel对标签的过滤有自己的解决办法,在模板输出是两边加上!!$a!!即可
10、模板引擎,在模板中可以使用@yield()和@section()@show,对于后者可以在模板中继续添加内容,子类继承时只需要加上parent即可加载。
子类继承模板使用@extends(‘layouts.admin‘),注:extends需加 s ,路径填写是用‘ . ’隔开