前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >laravel的那些坑

laravel的那些坑

作者头像
lilugirl
发布2019-05-26 21:14:38
1.8K0
发布2019-05-26 21:14:38
举报
文章被收录于专栏:前端导学前端导学

服务器是Nginx的 照着文档通过composer安装了一个非最新版本 (5.0)那版。

开始是看中文文档,死活安装不上,后来看了英文文档发现这个版本的安装说明是不同的

按照这个命令 才能正确地安装

代码语言:javascript
复制
composer create-project laravel/laravel {directory} "~5.0.0" --prefer-dist

安装完成后发现首页也能跑了,但是其它路由都是404错误

发现原来需要给ngix配置增加一句话,其实英文文档下面就提到了,只是当时没仔细看文档。

代码语言:javascript
复制
location / { try_files $uri $uri/ /index.php?$query_string; }

我的完整的ngix配置文件

代码语言:javascript
复制
server {
        listen       80;
        server_name  lv.aliyun lv.hihualang.com;
	index index.html index.htm index.php;
	root /alidata/www/lv/5/public;
	location ~ .*\.(php|php5)?$
	{
		#fastcgi_pass  unix:/tmp/php-cgi.sock;
		fastcgi_pass  127.0.0.1:9000;
		fastcgi_index index.php;
		include fastcgi.conf;
	}

	location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    
	location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
	{
		expires 30d;
	}
	location ~ .*\.(js|css)?$
	{
		expires 1h;
	}
	
	include /alidata/server/nginx/conf/rewrite/phpwind.conf;
	access_log  /alidata/log/nginx/access/phpwind.log;
}

Laravel 5 下使用 HTML 和 Form

说明

Laravel 5 因为采用了另一套不同的架构, 而把 HTML 和 Form 类从核心里面移除.

如果还想继续使用这两个类的话, 可以使用以下方法:

添加到 composer.json

代码语言:javascript
复制
"require": {

    "illuminate/html": "~5.0"

},

更新

代码语言:javascript
复制
composer update
代码语言:javascript
复制
更新完以后,打开 /config/app.php

代码语言:javascript
复制
providers

数组下面添加

代码语言:javascript
复制
'Illuminate\Html\HtmlServiceProvider',
代码语言:javascript
复制
aliases

数组下面添加

代码语言:javascript
复制
'Form'      => 'Illuminate\Html\FormFacade',

'HTML'      => 'Illuminate\Html\HtmlFacade'

这样就安装好啦!

使用方法

以前写法是这样的

代码语言:javascript
复制
{{Form::open()}}



{{Form::close()}}

现在变成这样的了

代码语言:javascript
复制
{!! Form::open() !!}



{!! Form::close() !!}

后来发现在laravel5 下面用 html即使按照上面设置 还是有问题, 根本搞不定,所以还是放弃了在laravel5下面使用html和form的想法,干脆还是先用laravel4吧,毕竟教程也多。

数据迁移时,系统报错说是基表migrations不存在, 这时候需要先执行命令生成migrations表

代码语言:javascript
复制
$ php artisan migrate:install

然后再执行

代码语言:javascript
复制
$ php artisan migrate

参考http://laravelbook.com/laravel-migrations-managing-databases/

Class 'Carbon' not found

只要在/app/config/app.php 文件下增加一条别名'aliases'

代码语言:javascript
复制
'Carbon' => 'Carbon\Carbon',

即可

controller里的 $this->beforeFilter on 的写法不起作用,

改用 only

例如

代码语言:javascript
复制
$this->beforeFilter('guest', ['only' => ['getLogin', 'getRegister']]);

原因说是:The 'on' is actually for specifying a HTTP verb. Try this instead:

发现在laravel中写一个带参数的路由 但希望把逻辑代码都写道对应的controller里是一件很难的事情,但有个技巧 你可以直接在代码区域new一个controller 返回这个controller的方法,就可以参数传入了

代码语言:javascript
复制
Route::get('{model}/lists', function ($model) {
  $className = 'App\Http\Controllers\\'.ucfirst($model).'Controller';
  $obj = new $className;
  return $obj->lists();
});

后来发现其实不用这么做 laravel自带的restful方式,轻松创建带参数的路由 标准化增删该查 只要定义一行路由

Now we can register a resourceful route to the controller:

代码语言:javascript
复制
Route::resource('photo', 'PhotoController');

This single route declaration creates multiple routes to handle a variety of RESTful actions on the photo resource. Likewise, the generated controller will already have stubbed methods for each of these actions with notes informing you which URIs and verbs they handle.

Actions Handled By Resource Controller

Verb

Path

Action

Route Name

GET

/resource

index

resource.index

GET

/resource/create

create

resource.create

POST

/resource

store

resource.store

GET

/resource/{resource}

show

resource.show

GET

/resource/{resource}/edit

edit

resource.edit

PUT/PATCH

/resource/{resource}

update

resource.update

DELETE

/resource/{resource}

destroy

resource.destroy

执行 php artisan generate:model xxx时报错

[InvalidArgumentException] There are no commands defined in the "generate" namespace.

需要安装这个包 http://www.cnsecer.com/6696.html

执行代码的过程中又发现 composer 报 zlib_decode(): data error

解决办法:执行 composer self-update 即可

发现用命令安装总是报错,直接放弃 ,去官网直接下载包

https://github.com/JeffreyWay/Laravel-4-Generators

代码语言:javascript
复制

可以通过命令下在一个完整包看看代码组织形式

$ git clone http://git.shiyanlou.com/shiyanlou/laravel-blog-2

替换 \vendor\composer\autoload_classmap.php 相关部分

拷贝 \vendor\way文件包

修改app.php

默认的时区需要改

‘timezone’ => ‘Asia/Shanghai’,//默认值嗯UTC

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Laravel 5 下使用 HTML 和 Form
    • 说明
      • 添加到 composer.json
      • 更新
      • 使用方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档