Laravel 5 系列入门教程(二)【最适合中国人的 Laravel 教程】
本教程示例代码见:https://github.com/johnlui/Learn-Laravel-5
大家在任何地方卡住,最快捷的解决方式就是去看我的示例代码。
我们将改变学习路线,不再像 Laravel 4 教程那样先构建登录系统。在本篇教程中,我们将一起构建 Pages 的管理功能,尝试 Laravel 的路由和 PHP 的命名空间。
1. 路由
Laravel 中的路由,跟其他 PHP 框架一样,作用是把各种请求分流到各个控制器。
在 `learnlaravel5/app/Http/routes.php` 的末尾添加以下代码:
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function() { Route::get('/', 'AdminHomeController@index'); });
这表示创建了一个路由组。
1. `'prefix' => 'admin'` 表示这个路由组的 url 前缀是 /admin,也就是说中间那一行代码 `Route::get('/'` 对应的链接不是 http://fuck.io:88/ 而是 http://fuck.io:88/admin ,如果这段代码是 `Route::get('fuck'` 的话,那么 URL 就应该是 http://fuck.io:88/admin/fuck 。
2. `'namespace' => 'Admin'` 表示下面的 `AdminHomeController@index` 不是在 `\App\Http\Controllers\AdminHomeController@index` 而是在 `\App\Http\Controllers\Admin\AdminHomeController@index`,加上了一个命名空间的前缀。
如果你用过 Laravel 4,会发现 Laravel 5 的命名空间规划比较怪异,这其实是一个非常大的进步。Laravel 4 其实已经全面引入了命名空间这个强大的特性,但是为了“降低学习成本”,把 路由、控制器、模型 的默认命名空间全部设置成了顶级命名空间,这个举动反而让很多人比较轻易地“上手”了 Laravel,但是在用了一段时间以后,还需要翻越一堵高墙,那就是命名空间,而且有了前面的“容易上手”的印象作为铺垫,后期的学习会更加困难。Laravel 5 把命名空间全部隔开,控制器在 `\App\Http\Controllers`,模型在 `\App`,让我们在刚上手的时候就体验命名空间分离的感觉,总体上其实是会降低学习成本的。
2. 控制器
我们可以使用 Artisan 非常方便地构建控制器:
php artisan make:controller Admin/AdminHomeController
得到 `learnlaravel5/app/Http/Controllers/Admin/AdminHomeController.php` 文件。
在 `class AdminHomeController extends Controller {` 上面增加一行:
use App\Page;
修改 index() 的代码如下:
public function index() { return view('AdminHome')->withPages(Page::all()); }
控制器中文文档:http://laravel-china.org/docs/5.0/controllers
控制器中涉及到了许多的命名空间知识,可以参考 PHP 命名空间 解惑。
3. 视图
新建 `learnlaravel5/resources/views/AdminHome.blade.php`:
@extends('app') @section('content') <div class="container"> <div class="row"> <div class="col-md-10 col-md-offset-1"> <div class="panel panel-default"> <div class="panel-heading">后台首页</div> <div class="panel-body"> <a href="{{ URL('admin/pages/create') }}" class="btn btn-lg btn-primary">新增</a> @foreach ($pages as $page) <hr> <div class="page"> <h4>{{ $page->title }}</h4> <div class="content"> <p> {{ $page->body }} </p> </div> </div> <a href="{{ URL('admin/pages/'.$page->id.'/edit') }}" class="btn btn-success">编辑</a> <form action="{{ URL('admin/pages/'.$page->id) }}" method="POST" style="display: inline;"> <input name="_method" type="hidden" value="DELETE"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <button type="submit" class="btn btn-danger">删除</button> </form> @endforeach </div> </div> </div> </div> </div> @endsection
视图的基本用法在此不再赘述,请阅读中文文档:http://laravel-china.org/docs/5.0/views
访问 http://fuck.io:88/admin 得到如下页面:
至此,包含 路由 》 控制器 》 模型 》 视图 的整个流程都已经完成。
4. 完成 Pages 管理功能
接下来,我将记录下我实现 Pages 管理功能的过程,不再做过多的阐述。大家有问题可以直接在本文下面留言,我会及时回复。
4.1 修改路由 learnlaravel5/app/Http/routes.php
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function() { Route::get('/', 'AdminHomeController@index'); Route::resource('pages', 'PagesController'); });
此处增加了一条“资源控制器”,中文文档地址:http://laravel-china.org/docs/5.0/controllers#restful-resource-controllers
4.2 创建 learnlaravel5/app/Http/Controllers/Admin/PagesController.php
运行:
php artisan make:controller Admin/PagesController
4.3 修改 learnlaravel5/app/Http/Controllers/Admin/PagesController.php 为:
<?php namespace App\Http\Controllers\Admin; use App\Http\Requests; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Page; use Redirect, Input, Auth; class PagesController extends Controller { /** * Show the form for creating a new resource. * * @return Response */ public function create() { return view('admin.pages.create'); } /** * Store a newly created resource in storage. * * @return Response */ public function store(Request $request) { $this->validate($request, [ 'title' => 'required|unique:pages|max:255', 'body' => 'required', ]); $page = new Page; $page->title = Input::get('title'); $page->body = Input::get('body'); $page->user_id = 1;//Auth::user()->id; if ($page->save()) { return Redirect::to('admin'); } else { return Redirect::back()->withInput()->withErrors('保存失败!'); } } /** * Show the form for editing the specified resource. * * @param int $id * @return Response */ public function edit($id) { return view('admin.pages.edit')->withPage(Page::find($id)); } /** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update(Request $request,$id) { $this->validate($request, [ 'title' => 'required|unique:pages,title,'.$id.'|max:255', 'body' => 'required', ]); $page = Page::find($id); $page->title = Input::get('title'); $page->body = Input::get('body'); $page->user_id = 1;//Auth::user()->id; if ($page->save()) { return Redirect::to('admin'); } else { return Redirect::back()->withInput()->withErrors('保存失败!'); } } /** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { $page = Page::find($id); $page->delete(); return Redirect::to('admin'); } }
4.4 创建视图文件
首先在 learnlaravel5/resources/views 下创建 admin/pages 两级文件夹。
然后创建 learnlaravel5/resources/views/admin/pages/create.blade.php:
@extends('app') @section('content') <div class="container"> <div class="row"> <div class="col-md-10 col-md-offset-1"> <div class="panel panel-default"> <div class="panel-heading">新增 Page</div> <div class="panel-body"> @if (count($errors) > 0) <div class="alert alert-danger"> <strong>Whoops!</strong> There were some problems with your input.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ URL('admin/pages') }}" method="POST"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <input type="text" name="title" class="form-control" required="required"> <br> <textarea name="body" rows="10" class="form-control" required="required"></textarea> <br> <button class="btn btn-lg btn-info">新增 Page</button> </form> </div> </div> </div> </div> </div> @endsection
之后创建 learnlaravel5/resources/views/admin/pages/edit.blade.php:
@extends('app') @section('content') <div class="container"> <div class="row"> <div class="col-md-10 col-md-offset-1"> <div class="panel panel-default"> <div class="panel-heading">编辑 Page</div> <div class="panel-body"> @if (count($errors) > 0) <div class="alert alert-danger"> <strong>Whoops!</strong> There were some problems with your input.<br><br> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ URL('admin/pages/'.$page->id) }}" method="POST"> <input name="_method" type="hidden" value="PUT"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> <input type="text" name="title" class="form-control" required="required" value="{{ $page->title }}"> <br> <textarea name="body" rows="10" class="form-control" required="required">{{ $page->body }}</textarea> <br> <button class="btn btn-lg btn-info">编辑 Page</button> </form> </div> </div> </div> </div> </div> @endsection
4.5 查看结果
后台首页 http://fuck.io:88/admin :
新增 Page http://fuck.io:88/admin/pages/create :
编辑 Page http://fuck.io:88/admin/pages/1/edit :
页面上的新增、编辑、删除的功能均已经完成,并且加入了表单验证,Pages 管理功能完成!
教程(二)代码快照:https://github.com/johnlui/Learn-Laravel-5/archive/tutorial_2.zip
下一步:Laravel 5 系列入门教程(三)【最适合中国人的 Laravel 教程】
评论:
2016-05-26 10:10
:[Symfony\Component\Debug\Exception\FatalErrorException]
Call to undefined method Illuminate\Routing\Route::get()
这是怎么回事呢?
2016-05-13 18:22
<input name="_method" type="hidden" value="DELETE">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<button type="submit" class="btn btn-danger">删除</button>
</form> 这是如何删除的呀
2016-03-30 17:47
Sorry, the page you are looking for could not be found.
NotFoundHttpException in RouteCollection.php line 145:
求解这是什么情况~~~~~
2016-03-27 21:57
2016-01-17 20:04
line 16: Class 'app\Page' not found
我把use app\Page;改成小写也不行,
我的文件夹名是小写的
2016-01-28 13:30
类似use App\Http\Requests;在app下这个路径还是存在的,但是App\Page没有这个路径...
2015-11-18 16:36
@section('content')
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-1">
<div class="panel panel-default">
<div class="panel-heading">后台首页</div>
<div class="panel-body">
<a href="{{ URL('admin/pages/create') }}" class="btn btn-lg btn-primary">新增</a>
@foreach ($pages as $page)
<hr>
<div class="page">
<h4>{{ $page->title }}</h4>
<div class="content">
<p>
{{ $page->body }}
</p>
</div>
</div>
请问@foreach ($pages as $page)中pages的定义在哪里?急切求解答
2015-11-22 10:05
view('AdminHome')->withPages(Page::all())
page模型继承model模型
class Page extends Model
model模型中有一个all方法,查询数据库所有字段
withPages是指查询Pages表
相关文件:
page模型:app/Page.php
model模型: vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php
AdminHomeController控制器:app/Http/Controllers/Admin/AdminHomeController.php
个人理解,如有误请更正。
2015-11-17 17:09
<form action="{{ URL('admin/pages') }}" method="POST" enctype="multipart/form-data">
<input type="file" name="myfile" multiple="true">,在点击提交的时候报“There were some problems with your input.
The myfile format is invalid.”,向您请教下这个是哪里出了问题?
2015-11-13 21:47
我的页面表单代码:
<form action="p1" method="POST">
<input type="hidden" name="_token" value="<?php echo csrf_token() ?>">
<input type="submit" vlaue="Test">
</form>
路由中添加了:
Route::post('p1',function(){
return "hello laravel by POST!";
});
我把csrf禁用之后可以正常显示,开始csrf总是token mismatchexception,请您帮忙解答一下
2015-11-07 09:33
GET /admin/pages/create 创建 PagesController::create
POST /admin/pages 保存 PagesController::store
GET /admin/pages/{id} 显示 PagesController::show
GET /admin/pages/{id}/edit 编辑 PagesController::edit
PUT/PATCH /admin/pages/{id} 更新 PagesController::update
DELETE /admin/pages/{pages} 删除 PagesController::destroy
把这个对应关系加进去,可以看的更清楚
2016-05-13 18:18
GET /admin/pages/create 创建 PagesController::create
POST /admin/pages 保存 PagesController::store
GET /admin/pages/{id} 显示 PagesController::show
GET /admin/pages/{id}/edit 编辑 PagesController::edit
PUT/PATCH /admin/pages/{id} 更新 PagesController::update
DELETE /admin/pages/{pages} 删除 PagesController::destroy
这个需要在什么地方配置吗
2015-11-05 15:42
Undefined variable: request
页面里也引入了use Illuminate\Http\Request;
$this->validate($request, []); 就是这个$request找不到 。是什么原因呢?
2015-11-03 11:32
view里面的这个完成修改:
<form action="{{ URL('home/containers'.$container->id.)}}" method="POST">
<input name="_method" type="hidden" value="PUT">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>
controller里面的
public function update(Request $request,$id)
{
$this->validate($request, [
'id' => 'required',
'container_code' => 'required',
]);
$Container = Container::find($id);
//还有其他代码
if($Container->save()){
return Redirect::to('home/container_info');//这个页面确实存在
}
else{
return Redirect::back()->withInput()->withErrors('保存失败!');
}
}
但是完成修改时候他会报错
Sorry, the page you are looking for could not be found.
1/1
NotFoundHttpException in RouteCollection.php line 145:
万分感谢博主的时间~~
Ying
2015-11-02 10:49
报错没有引入Input和Redirect这两个文件,请问这两个文件在什么地方啊?
2015-10-28 14:34
2015-10-23 14:59
2015-10-22 12:00
但是又不想全局禁用csrf。有什么办法没
2015-10-01 16:09
Class App\Http\Controllers\Admin\adminHomeController does not exist
2015-09-27 22:18
2015-09-22 13:31
程序里面加了
@extends('app')
@section('content')
页面就显示空白也。去掉后就可以显示出来。这个是什么原因造成的?
2015-09-22 09:31
routes代码如下:
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function()
{
Route::get('/', 'AdminHomeController@index');
//Route::resource('pages', 'PagesController');
});
运行出现这个异常是什么原因导致的
at CompilerEngine->get('E:\www\learnlaravel5\resources\views/AdminHome.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'pages' => object(Collection))) in View.php line 138
2015-09-14 19:20
test.com/laravel/ 以及 test.com/laravel/1 这样的路由可以配置出来。
但 test.com/laravel/1.html 这样的地址, 路由怎么写,是和上面的两个地址访问的是一个地方呢?
2015-08-22 23:06
<form action="{{ URL('admin/pages') }}" method="POST">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="text" name="title" class="form-control" required="required">
<br>
<textarea name="body" rows="10" class="form-control" required="required"></textarea>
<br>
<button class="btn btn-lg btn-info">新增 Page</button>
</form>
这里面的{{ URL('admin/pages') }} 为什么能指向PagesController.php中的store方法
2015-08-19 13:19
2015-08-18 14:37
2015-08-05 16:16
Fatal error: Class 'Illuminate\Foundation\Application' not found in E:\laravel\learnlaravel5\bootstrap\app.php on line 14
上一篇文章中有人也遇到了这个问题,楼主的回答是是否php版本过低,我看了下我的版本,是5.6的!
2015-07-23 16:44
另外,像return view('AdminHome')->withPages(Page::all()); 这里只能传一个参数,如果有多个参数应该怎么写呢?
2015-07-22 09:59
以下是报错内容,求教如何处理~感激不尽!
Building: C:\Program Files (x86)\nodejs\node.exe node_modules\pangyp\bin\node-gy
p rebuild --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYT
HON env variable.
gyp ERR! stack at failNoPython (E:\xampp\htdocs\www\test\node_modules\
laravel-elixir\node_modules\gulp-sass\node_modules\node-sass\node_modules\pangyp
\lib\configure.js:104:14)
gyp ERR! stack at E:\xampp\htdocs\www\test\node_modules\laravel-elixir
\node_modules\gulp-sass\node_modules\node-sass\node_modules\pangyp\lib\configure
.js:65:11
gyp ERR! stack at FSReqWrap.oncomplete (evalmachine.<anonymous>:95:15)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "C:\\Program Files (x86)\\nodejs\\node.exe" "E:\\xampp\\htdocs\
\www\\spayz-demo\\node_modules\\laravel-elixir\\node_modules\\gulp-sass\\node_mo
dules\\node-sass\\node_modules\\pangyp\\bin\\node-gyp" "rebuild" "--libsass_ext=
" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd E:\xampp\htdocs\www\test\node_modules\laravel-elixir\node_mod
ules\gulp-sass\node_modules\node-sass
gyp ERR! node -v v0.12.7
gyp ERR! pangyp -v v2.2.1
gyp ERR! not ok
Build failed
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program Files (
x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! node v0.12.7
npm ERR! npm v2.11.3
npm ERR! path C:\Users\Administrator\AppData\Roaming\npm-cache\through2\0.6.5\pa
ckage\package.json
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! Error: EPERM, rename 'C:\Users\Administrator\AppData\Roaming\npm-cache\
through2\0.6.5\package\package.json'
npm ERR! at Error (native)
npm ERR! { [Error: EPERM, rename 'C:\Users\Administrator\AppData\Roaming\npm-ca
che\through2\0.6.5\package\package.json']
npm ERR! errno: -4048,
npm ERR! code: 'EPERM',
npm ERR! path: 'C:\\Users\\Administrator\\AppData\\Roaming\\npm-cache\\through
2\\0.6.5\\package\\package.json',
npm ERR! parent: 'gulp-todo' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! Please include the following file with any support request:
npm ERR! E:\xampp\htdocs\www\spayz-demo\npm-debug.log
2015-07-15 19:32
学习《laravel 5 系列入门教程二》的”3 视图“之后,我本人在浏览器端运行localhost:8000/admin后,出现的页面不是您随后贴出的页面,而是”4.5查看结果“中的第一个页面。既然”3 视图“的html代码中存在”后台首页“,”编辑“,”删除“,我个人理解就是页面中应该会出现这三个的button,正如”4.5查看结果“中的第一个页面一样。不知是否是我理解有误?还望博主解惑。(ps:博主的博客做的简洁大方,非常欣赏!!!,这里我大言不惭的有一个小小的请求:可不可以加一个”返回顶部“/"置顶"的功能,因为在写评论或观看别人的评论中途想更方便地返回到页面首部)
非常感谢!!!
2015-07-03 14:45
'title' => 'required|unique:pages|max:255',
'body' => 'required',
]);
为啥会报错,Use of undefined constant request - assumed 'request',去掉则没事,这句语句用来干嘛的呀,求问。。。
2015-07-01 16:29
像下面这样:
http://test.local/pages?lang=en
我使用下面这两种方式都获取不到:
Route::get('/pages', function (Request $req)
{
var_dump(\Input::get('lang'));
var_dump($req->input('lang'));
});
2015-06-29 18:10
为什么这里传递的Page::all() 到blade就是$pages的值了
2015-06-19 00:01
我刚学Laravel5
但是碰到了这个问题 就是在使用命令行创建controller的时候
php artisan make:controller Admin/AdminHomeController
[Symfony\Component\Debug\Exception\FatalErrorException]
syntax error, unexpected end of file
会报这个错误 不知道为什么希望博主可以回答谢谢
2015-06-12 11:26
2015-06-12 13:18
2015-06-14 21:56
2015-06-11 22:17
ErrorException in compiled.php line 13444:
View [app] not found. (View: C:\wamp\www\laravel\resources\views\AdminHome.blade.php)
2015-06-06 15:57
Controller类中直接使用的view()函数怎么引入的? 在哪儿定义的?
use Redirect, Input, Auth; 这几个类具体的定义在哪儿?
求解
2015-06-06 09:56
<a href="{{ URL('admin/pages/'.$page->id.'/edit') }}" class="btn btn-success">编辑</a> 实现编辑功能,编辑id号为$page->id的page
路由到PagesController的edit($id)方法,将$page->id作为参数传入,
貌似过程是这样的
比较疑惑,既然要将$page->id作为参数传递给PagesController的edit($id)方法,
为何参数存在 URL('admin/pages/'.$page->id.'/edit') 这么奇怪的表示? 如何将这个$page->id解析给edit($id)方法的?
2015-06-05 19:17
自撰一例,假设Article表中有个Atitle值且unique,我想找到Page表的title和Article表中Atitle相等的数据,然后传入视图edit处理:
use App\Page;
use App\Article;
..
public function edit($id)
{
return view('admin.pages.edit')->withPage(Page::find($id))->withArticle(Article::where($title,'=',Page::find($id)->title));
}
这条语句肯定不能执行,正确的查找方式应该是怎样的呢?请博主教我。
2015-06-05 19:25
不过应该减少查询次数:
$page = Page::find($id);
$article = Article::where('title', $page->title)->first();
return view('admin.pages.edit')->withPage($page)->withArticle($article);
2015-06-05 11:32
在相应的PagesController.php 的store函数中,
if ($page->save()) {
return Redirect::to('admin');
表示如果存储成功则回到~/admin页面下。
但是我的程序在点击页面上的“新增 Page”按钮后,却跳到了“~/admin/pages/"这个地址,这是怎么回事?
PagesController和create view里的转向和表头我都是照着教程来的啊。
2015-06-05 11:53
检查一下这句
2015-06-05 14:48
在AdminHome.blade.php中
<a href="{{ URL('admin/pages/'.$page->id.'/edit') }}" class="btn btn-success">编辑</a>
定义了”编辑“按钮的转向地址是带id的。
对应的PagesController.php的edit函数只简单定义了视图:
return view('admin.pages.edit')->withPage(Page::find($id));
没有”pages/“和”/edit“之间的”$page->id“。
那么当点击编辑按钮,编辑 Page的页面 http://fuck.io:88/admin/pages/1/edit 是如何知道要转向
admin.pages.edit 而不是 admin.pages.1.edit 的?
这中间的转换过程我没搞明白,试着在别的项目上实现类似功能时,得到提示 admin.pages.1.edit not found.
请问如何解决?
2015-06-01 09:59
有一个问题就是,当我在使用嵌套资源控制器的时候,show($id) 这个函数传入的$id依然是第一个资源控制器的$id而不是嵌套之后的。
比如链接是 localhost/people/bob/photo/0001 people是一个资源控制器,photo是嵌套的资源控制器,在photoController里面,show($id)的$id依然是bob, 但是我想要的是0001,这个有办法解决么,谷歌没有谷歌出来。
谢谢啦
2015-05-22 17:12
找来找去、不知道那出了问题?
2015-05-21 09:09
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
1、这个路由怎么表示的?
2、请求:auth/login 是登入首页,那是通过这个路由控制的( 'auth' => 'Auth\AuthController',)?
3、我看了位于 Auth 下的控制器 AuthController.php, 开面并没有 渲染登入页面啊。
4、(1)控制器 AuthController.php 中引用了 “use AuthenticatesAndRegistersUsers ”,我把这句话注释了,页面出错
(2)可是我找到对应的 “Illuminate\Foundation\Auth” 下的 “AuthenticatesAndRegistersUsers.php” ,把 “trait AuthenticatesAndRegistersUsers ”注释了或者把整个页面注释了,为什么页面不会出错。
2015-05-13 00:10
edit.blade.php 照copy你的代码,点击“edit”按钮出现错误,链接指向了:
http://localhost/admin/pages12/edit
而改成http://localhost/admin/pages/12/edit则可以。
代码没有改动:
<form action="{{ URL('admin/pages/'.$page->id) }}" method="POST">
......
请帮忙解疑。
2015-05-13 11:36
但在点击“编辑”的时候发现链接指向变成这个http://localhost/admin/pages12/edit(这里有疑问)。
手动将URL改成http://localhost/admin/pages/12/edit,则可以打开。
看上去像是把<form action="{{ URL('admin/pages/'.$page->id) }}" method="POST">
这里的pages后面的“/”自动给清除掉了。
不知道是我环境设置上有问题还是其他原因?
2015-05-27 19:43
http://172.16.4.203/admin/pages/5/edit 这个就可以访问
http://172.16.4.203/admin/pages5/edit 这个直接报:
Sorry, the page you are looking for could not be found.
不知道楼主这个问题 如何解决的?
sorry,我发现了这个错误是代码抄写错误导致!
AdminHome.blade.php这个文件中:
action="{{ URL('admin/pages/'.$page->id) }}"
楼主应该少了个斜杠,在pages后
2015-05-12 22:50
2.SQLSTATE[42000]: Syntax error or access violation: 1103 Incorrect table name 'pages ' (SQL: select count(*) as aggregate from `pages ` where `title` = 33)
这两个错误意思是表不能用么
2015-05-07 14:47
2015-04-27 18:17
新增之后,报错了
2015-04-27 10:24
FatalErrorException in AdminHomeController.php line 20:
Class 'App\Page' not found
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Page;
use Illuminate\Http\Request;
class AdminHomeController extends Controller {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
//
return view('AdminHome')->withPages(Page::all());
}
2015-04-16 15:30
SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)
我明明改 .env 了,为什么还是 'homestead'@'localhost'这个呢?
2015-04-14 16:23
这是获取整个表的数据,
假设我想倒序,或加上动态的限制条件应该怎么做呢
比如只需要某个范围内的id,并倒数或分组应该怎么做
2015-04-09 17:29
目前的问题是
1:新增数据commit后画面回到后台首页,数据能保存成功。
可是新增的数据刷新不出来,一定要f5后才能显示出来。
这是什么问题?如何解决?
2:edit按钮点下去后,Title 0这条数据会报错,
NotFoundHttpException in compiled.php line 7755:
其余数据都可以正常进入edit画面。
以上两个问题感觉都像是伪静态造成的,但是web方面很小白,盼回答。
2015-04-08 16:04
1:做Page的增删改查的时候,PagesController中的Redirect,input,auth为什么不用上完整的命名空间?phpstorm提示这三者都是在Illuminate\Support\Facades\下的。我使用你的方式不会有问题,加上完整的也不会有问题,但是Auth在app/http/controllers/下也有个
Auth命名空间,为什么没有完整的命名空间它不会使用到这个空间上去?我写上use App\Http\Controllers\Auth会出错。
2.代码有错误,在create,edit中,view的参数是错误的,提示view模板找不到。view的参数不就是对应模板的名字么,为什么写成admin.pages.create这种形式去了?
3.编辑的模板的名字和截图的名字对不上。。。
2015-04-08 16:15
1. “phpstorm提示这三者都是在Illuminate\Support\Facades\下的” http://lvwenhan.com/laravel/433.html#comment-9372 这条评论解释了原理。其他的一些问题应该是你没有完全理解命名空间的各种用法导致的,推荐仔细阅读 《PHP 命名空间 解惑》 http://lvwenhan.com/php/401.html
2. admin.pages.create 这是子文件夹的意思。我在文中写了:
4.4 创建视图文件
首先在 learnlaravel5/resources/views 下创建 admin/pages 两级文件夹。
然后创建 learnlaravel5/resources/views/admin/pages/create.blade.php:
3. 教程中的代码忘了改了,我去改了。。
2015-04-04 13:25
因为我基本是初学者不知到怎么弄
use App\Page;
这句目标在哪里 :3
public function index()
{
return view('AdminHome')->withPages(Page::all()); //不清楚这句
}
我什么架构都不熟悉
2015-04-03 16:04
PDOException in E:\PHPTools\Apache2.4\Apache24\htdocs\learnlaravel5\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php line 47:
could not find driver
新手求指教啊
2015-03-26 17:35
<form action="{{ URL('admin/pages') }}" method="POST">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="text" name="title" class="form-control" required="required">
<br>
<textarea name="body" rows="10" class="form-control" required="required"></textarea>
<br>
<button class="btn btn-lg btn-info">新增 Page</button>
</form>
这里的按钮并没有type='submit',却也能够提交表单,并且在实际的网页源代码中出现了bootstrap和jquery的js文件,请问这些是怎么做到的,谢谢
2015-03-25 14:24
之前没仔细学过php,问了小白问题~
2015-03-26 11:32
'aliases' => [
'Auth' => 'Illuminate\Support\Facades\Auth',
'Input' => 'Illuminate\Support\Facades\Input',
'Redirect' => 'Illuminate\Support\Facades\Redirect',
],
2015-03-26 11:46
/**
* @see \Illuminate\Http\Request
*/
/**
* @see \Illuminate\Routing\Redirector
*/
我这么问是因为,我在教程四的CommentsController 中看你调用了Input::all()和Redirect::back()这些方法。。
但在对应的类和父类里没找到这些方法。。可是在他注释里提到的类里找到了。。
菜鸟一枚,但想搞清楚。。先多谢赐教了~
2015-03-18 17:12
2015-03-18 22:37
<input type="hidden" name="_method" value="PUT">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
都有的 没问题
2015-03-17 10:50
我发现你的controller也改用了view()这个方法。比起l4,l5增加了view(),redirect(),response()的方法,并且使用依赖注入的编程思想。
想问问其实view(),redirect(),response()这些如此方便的方法是在哪里来的的呢?我往下找父类没找到这些方法。不知道版主有没有研究。
谢谢版主的浏览和分享
2015-03-12 10:17
FatalErrorException in AdminHomeController.php line 18: Class 'App\Http\Controllers\Admin\Page' not found
in AdminHomeController.php line 18
at HandleExceptions->fatalExceptionFromError(array('type' => '1', 'message' => 'Class 'App\Http\Controllers\Admin\Page' not found', 'file' => '/usr/local/nginx/html/laravel2/app/Http/Controllers/Admin/AdminHomeController.php', 'line' => '18')) in compiled.php line 1738
at HandleExceptions->handleShutdown()
2015-03-11 16:27
Method [show] does not exist.
好像是 method="DELETE" 这个不管用,是不是我哪里没有设置。
2015-03-12 10:55
<form action="{{ URL('admin/pages/'.$page->id) }}" method="DELETE" style="display: inline;">
<button type="submit" class="btn btn-danger">删除</button>
</form>
修改成参考代码里面的,或者是在3. 章节里 视图新建 `learnlaravel5/resources/views/AdminHome.blade.php`:下面的
<form action="{{ URL('admin/pages/'.$page->id) }}" method="POST" style="display: inline;">
<input name="_method" type="hidden" value="DELETE">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<button type="submit" class="btn btn-danger">删除</button>
</form>
PS:好吧,写的有点啰嗦,希望你能看的懂
2016-05-26 10:35
刚才运行的语句是:php artisan make:controller Admin/AdminHomeController
刚才的报错是: Call to undefined method Illuminate\Routing\Route::get()