[1]缓存问题
laravel中使用的配置文件,都会放在config目录下面,当变更某个参数的时候,如果发现不生效,可以在命令行下面执行 php artisan config:clear 命令才清除缓存
[2]composer 安装
#php -r "readfile('https://getcomposer.org/installer');" | php //下载下来compser.phar
如果上述命令报错,无法下载composer.phpar,可以使用如下命令
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"
下载后,移动composer.phpar到环境变量目录下
#mv composer.phar /usr/local/bin/composer //移动到环境变量目录下
[3]laravel 创建一个项目
composer create-project laravel/laravel security(项目名称,自定义),安装完成后,就会生成目录的文件
#composercreate-projectlaravel/laravel=5.4.30ac--prefer-dist// 下载指定版本的laravel,查看最新版本查看https://packagist.org/
[4]使用migration创建数据库表
首先需要在.env文件配置好数据库链接,然后在命令行下执行如下命令
#php artisan make:migration create_users_table --create=users
Created Migration: 2017_08_03_064811_create_users1_table
执行完命令后,会在/database/migrations/目录下生成一个数据库迁移的文件,编辑该文件,发现,该文件中有两个方法,
up()方法是用户创建数据表的,在这个方法里面可以添加需要使用的数据库字段,down()方法用于回滚或者删除数据表
使用php artisan tinker模拟数据库操作如下
(1)先执行php artisan make:model Config -m 添加-m参数可以在生成model的同时创建出migration文件
(2)编辑migration文件,添加如下字段
写表字段的时候有很多修饰符,比如给某个字段添加注释
$table->string('username')->comment('用户姓名');
参考链接:https://d.laravel-china.org/docs/5.4/migrations#column-modifiers
表结构创建完成后,就可以执行 php artisan migrage了,执行完成后,数据库表就创建好了
注意,在Config.php文件下 添加如下行,否则无法插入数据库数据
laravel migrate 指定文件:
当使用 php artisan make:migration create_test_table后,如果仅仅想执行该文件,可以在 database/migrations 下创建一个文件夹,名字任意,以test为例
将上述文件拷贝到test为文件夹下,执行如下操作
php artisan migrate --path=database/migrations/test
这样就可以迁移该文件了
(3)实例化一个config类,然后操作如下
查看数据库数据更新如下;
[4]laravel 更新表字段(添加,更新,删除等)
laravel中更新字段,应该使用php artisan make:migration alert_scan_git_table --table scan_git
创建完成后,修改该文件,使用Schema的table方法修改表字段,如下所示
也可以采用一个笨方法,直接在数据库中删除该表,然后修改原有的migration文件(带有create方法的文件),修改完成后,执行migrate会提示 Noting to migrate
这是因为laravel针对每次迁移都会在当前数据库下的migrations表中插入一条记录,用于记录当前文件已经迁移过,所以,在migrations表里面,将该文件的迁移记录删除,然后再执行
php artisan migrate就可以了
参考链接: https://d.laravel-china.org/docs/5.1/migrations
[5]laravel Eloquent查询删除数据
1>删除数据
$flight = AppFlight::find(1); //根据主键id查找
$flight->delete();
或者
$flight = AppFlight::where('id','=','1122'); //根据条件查找
$flight->delete();
[6]laravel中执行系统命令
(1)安装依赖包 composer require symfony/process
(2)
use SymfonyComponentProcessProcess; use SymfonyComponentProcessExceptionProcessFailedException; $process = new Process('ls -lsa'); $process->run(); // executes after the command finishes if (!$process->isSuccessful()) { throw new ProcessFailedException($process); } return $process->getOutput();
参考链接:http://symfony.com/doc/current/components/process.html
【7】laravel 路由问题
1)laravel注册路由的时候可以选择,get或者post方式类似于如下这种
Route::get('/home', 'HomeController@index');
Route::post('/user/add', 'UserController@postAdd');
如果想要注册同时支持get和post的方法的路由,需要用到match函数,如下图
Route::match(['get','post'],'/home', 'HomeController@index');
2)注册路由的时候可以选择添加变量,比如删除用户,需要带有用户id参数,比如
Route::get('/user/del/{id}');也可以添加多个变量,比如
Route::get('/user/{action}/{id}','UserController@action');
在控制器中,编写action函数的时候,将这两个参数传进去就好,如果id参数是可选的,
也就是发送get请求的时候,有时候带id参数,有时候不带这个参数,那么可以在注册路由的时候函数就可以这么写,参数id后面跟上一个问号即可,控制器里面的函数传参数的时候
指定$id=null 即可
Route::get('/user/{action}/{id?}','UserController@action');
class UserController extends Controll
public function action($action,$id=null)
{
do something();
}
【8】在js中输入汉字的时候,有时候弹窗的话,会有乱码的情况出现,添加如下语句即可
header("Content-Type:text/html;charset=utf-8");
【9】在routes/web.php文件中注册路由,后端函数如何判断当前请求是post或者get?使用如下方法判断
public function test(Request $r)
{
if($r->isMethod('get'))
{do something()}
}
【10】获取post请求参数
public function test(Request $r)
{$name = $r->input('name');}
【11】laravel中使用富文本编辑器,选用百度开源的UEditor,使用方法如下
1)配置composer.json文件,在composer.json文件的require 里面加入
"stevenyangecho/laravel-u-editor": "~1.4"
在命令行里面运行composer update
不出意外的话,就会在下载富文本编辑器所需要的文件
2)执行完update以后在config/app.php中配置如下
providers配置
StevenyangechoUEditorUEditorServiceProvider::class
alias配置
'UEditor'=>StevenyangechoUEditorUEditorServiceProvider::class
3)注册命令行接口
php artisan vendor:publish
到此laravel-u-editor 富文本编辑器就安装好了,可以去项目config目录下看是否成成UEditorUpload.php这个文件,这个是富文本编辑器的配置文件,可以配置文件上传路径等。
4)使用编辑器
在需要使用编辑器的地方加入如下代码
<div id="ueditor" class="edui-default"> @include('UEditor::head') </div>
加入js文件,在视图的最后加入如下代码
<script id="ueditor"></script> <script> var ue=UE.getEditor("ueditor"); ue.ready(function(){ //因为Laravel有防csrf防伪造攻击的处理所以加上此行 ue.execCommand('serverparam','_token','{{ csrf_token() }}'); }); </script>
5)上传图片配置
config/UEditorUpload.php 配置 "imagePathFormat" => "/uploads/{yyyy}{mm}{dd}/{time}{rand:6}" imagePathFormat定义了上传图片的路径,在public目录下创建uploads目录,保证该目录对php用户可写,按照上述方法配置即可 /* 列出指定目录下的文件 */ "fileManagerActionName" => "listfile", /* 执行文件管理的action名称 */ "fileManagerListPath" => "/uploads", /* 指定要列出文件的目录 */ /* 列出指定目录下的图片 */ "imageManagerActionName" => "listimage", /* 执行图片管理的action名称 */ "imageManagerListPath" => "/uploads/", /* 指定要列出图片的目录 */
【12】laravel中表单验证的用法
当我们用到的form中有要提交的表单需要验证时,比如是不是合法的数字,合法的email,数字是不是介于某两个数字中间等等 ,larave中提供了两个方法
1)创建request文件
命令行下执行 php artisan make:request CreateJobRequest
执行完成后,打开laravel项目 http/app/Requests/目录下即可看到刚才创建的request文件
在该文件中,第一个函数 authorize用于验证用户权限,A用户不能操作B用户的表单,暂时用不到的,可以将函数内容修改为
rules()函数用户校验各个字段需要的条件
如上图所示,规则写好,如何引用这个request文件呢?
在控制器中,在要添加的函数中,
public function postedit(RequestsCreateNewScanTaskRequest $request) { //接收post过来的数据,并校验,如果request数据没有通过校验 //函数不会执行到里面来 }
当用户提交的表单不符合我们设定的规则时,需要友好的给出提示,提示用户哪里填写的不对,这时候就可以用如下代码展示出来
<h1>创建文章</h1> @if (count($errors) > 0) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <!-- 创建文章表单 -->
根据上面的代码配置上以后,发现很多提示都是英文的,如果想改成中文的提示可修改如下文件:
/resources/lang/en/validation.php文件,可以修改对应的提示信息
方法2)
最简单的表单验证的方法就是在控制器的函数中利用validate,
public function postdetail(Request $r) { $this->validate($r,['status'=>['required',Rule::in(['2','3'])]]);
//要求status字段在2和3中间选择,其他的数据都不被允许
//如果用户提交的数据不满足上述的条件,下面的代码将不被执行
}
参考链接:https://d.laravel-china.org/docs/5.4/validation#available-validation-rules
【13】larave中闭包函数传参(函数里面的函数)
使用use关键字,看下Controller中的一个函数
public function getnotice($id) { $vul = 111 Mail::send('mail.vul',['level'=>222],function ($message) use($vul){ $message->to($vul); $message->subject('test subject'); }); }
函数getnotice里面,还有一个闭包函数 function($message)
当 function($message)这个函数里面,想用$vul变量时,发现报错,提示该变量未定义
加上use($vul) 即可使用
【laravel中执行定时任务】
laravel中的定时任务依赖于系统级别的crontab,首先需要在系统里面添加一个php artisan的定时任务
#crontab -e 添加如下代码
* * * * * /usr/bin/php /laravel-project-dir/artisan schedule:run >>/dev/null 2>&1
//每分钟执行一次php artisan命令,然后artisan去调用laravel中添加的定时任务
然后 打开 AppConsoleKernel.php文件,示例代码如下
protected function schedule(Schedule $schedule) { $schedule->call(function (){ Log::info("test laravel schedule"); })->everyMinute(); } //Log::info打印日志到 storage/laravel.log文件 每分钟执行一次
然后查看storage/laravel.log 即可看到每分钟打印的日志
【重新生成应用的key】
phpartisankey:generate
【添加验证码】
参考资料:https://laravel-china.org/topics/2895/extension-recommended-mewscaptcha-image-authentication-code-solution
1.composer.json添加"mews/captcha":"^2.1"
2.composerupdate
3.config/app.php添加provider和alias
MewsCaptchaCaptchaServiceProvider::class,
'Captcha'=>MewsCaptchaFacadesCaptcha::class,
4.phpartisanvendor:publish
5.配置config/captcha.php文件
【添加ldap认证模块】
composer require adldap2/adldap2-laravel
【laravel 启用认证登录功能】
php artisan make:auth
【重构认证功能】
http://laravelacademy.org/post/5417.html
https://segmentfault.com/q/1010000004227038
登录时密码比对方法修改
IlluminateAuthEloquentUserProvidervalidateCredentials函数
$plain=$credentials['password'];
$crypter=newCrypter('mljr_salt_RhbTgbJ02Lsk');
$encrypted=$crypter->encrypt($plain);
$encrypt_plain=strtoupper(bin2hex($encrypted));
if($encrypt_plain==$user->getAuthPassword())
{
returntrue;
}
else{returnfalse;}
注册时创建用户密码加密方法修改
apphttpcontrollerauth
egistercontrollercreate函数
重置密码时的密码加密方法
IlluminateFoundationAuthResetPasswords.phpresetPassword函数
【加载自己写的类 功能】
https://blog.csdn.net/liukai6/article/details/78580913
【laravel下Carbon用法】
https://9iphp.com/web/laravel/php-datetime-package-carbon.html
【laravel 定时任务】
1. php artisan make:command PwdCheck
打开 appconsoleCommandsPwdCheck.php,在这个文件里面定义自己的业务逻辑,想要完成的功能,其中signature定义的名字是要用到的
2.打开appconsoleKernel.php文件,定义好 $commands和schedule
3.在系统里面添加crontab
crontab -e,添加如下行
* * * * * /usr/bin/php /opt/laravel/artisan schedule:run >> /dev/null 2>&1
参考资料
https://www.cnblogs.com/xxoome/p/6092961.html
https://blog.csdn.net/a_new_steven/article/details/73733087