Laravel 4 初级教程之Pages、表单验证_php实例

1. 构建Pages管理功能

运行命令:

php artisan generate:controller admin/PagesController

修改PagesController.php 内容:

<?phpnamespace App\Controllers\Admin;use Page;use Input, Notification, Redirect, Sentry, Str;use App\Services\Validators\PageValidator;class PagesController extends \BaseController {    public function index()    {        return \View::make('admin.pages.index')->with('pages', Page::all());    }    public function show($id)    {        return \View::make('admin.pages.show')->with('page', Page::find($id))->withAuthor(Sentry::findUserById(Page::find($id)->user_id)->name);    }    public function create()    {        return \View::make('admin.pages.create');    }    public function store()    {        $validation = new PageValidator;        if ($validation->passes())        {      $page          = new Page;      $page->title   = Input::get('title');      $page->body    = Input::get('body');      $page->user_id = Sentry::getUser()->id;            $page->save();            Notification::success('新增页面成功!');            return Redirect::route('admin.pages.edit', $page->id);        }        return Redirect::back()->withInput()->withErrors($validation->errors);    }    public function edit($id)    {        return \View::make('admin.pages.edit')->with('page', Page::find($id));    }    public function update($id)    {        $validation = new PageValidator;        if ($validation->passes())        {      $page          = Page::find($id);      $page->title   = Input::get('title');      $page->body    = Input::get('body');      $page->user_id = Sentry::getUser()->id;            $page->save();            Notification::success('更新页面成功!');            return Redirect::route('admin.pages.edit', $page->id);        }        return Redirect::back()->withInput()->withErrors($validation->errors);    }    public function destroy($id)    {        $page = Page::find($id);        $page->delete();        Notification::success('删除成功!');        return Redirect::route('admin.pages.index');    }}

然后,打开http://localhost:8000/admin 页面,用之前 seed 进去的账号密码登录,我们会得到一个错误:

Class App\Controllers\Admin\PagesController does not exist

这个文件明明已经有了啊,为什么Laravel报错说没有呢?!原因在第二篇教程里,我在这里直接说了吧。因为这个类不在顶级命名空间下,而我们没有告诉Laravel我们已经新添了一个子命名空间下的类。我们现在来告诉它:

composer dump-autoload

OK,刷新,我们又会得到以下错误:

View [admin.pages.index] not found.

这时候,把我的视图中的整个pages文件夹复制过去吧。

刷新。你会得到以下错误:

Class 'Notification' not found

这是因为我们还没有装这个composer包,edvinaskrucas/notification,请自行安装3.0.1 版(4是为 Laravel 5 准备的),这是第三个小作业。一定要放在 require 里面,require-dev 里面的包只在开发的时候使用。

这里的Notification 就是那个更好用的通知组件。

这个包装好以后,运行:

composer dump-autoload

然后在 config/app.php 里面恰当的位置分别增加下面两行:

'Krucas\Notification\NotificationServiceProvider'
'Notification' => 'Krucas\Notification\Facades\Notification'

恰当的位置很多人不理解,导致很多人出现了错误,解决方式也很简单:请直接参考我的示例代码:https://github.com/johnlui/Learn-Laravel-4/blob/master/app/config/app.php

刷新,如果你看到以下界面:

恭喜你~ Pages的管理页面完成了!

2. 表单验证

Laravel提供了原生的非常好用的表单验证功能,但是有时候验证规则需要复用,所以我们将利用强大的命名空间来实现代码复用,同时将展示Laravel之外的,PHP的命名空间带来的强大的组件化功能和模块解耦,HMVC什么的已经落后啦。

新建app/services/validators 两级文件夹,并在composer.json的 autoload > classmap 最后新增:

"app/services"

这是在告诉composer:来把我下面的所有文件和子文件夹中的所有文件合并到你的命名空间树上吧! 这样就让 app/services 下的类可以声明自己的命名空间了,子文件夹中的文件也可以声明的自己属于子命名空间了。这个文件夹将承载我们的表单验证类群,当然也可以承载许多其他组件和模块,实现完全解耦。

添加完成后,新建app/services/validators/Validator.php 文件:

<?phpnamespace App\Services\Validators;abstract class Validator {    protected $data;    public $errors;    public static $rules;    public function __construct($data = null)    {        $this->data = $data ?: \Input::all();    }    public function passes()    {        $validation = \Validator::make($this->data, static::$rules);        if ($validation->passes()) return true;        $this->errors = $validation->messages();        return false;    }}

新建app/services/validators/PageValidator.php 文件:

<?phpnamespace App\Services\Validators;class PageValidator extends Validator {    public static $rules = array(        'title' => 'required',        'body'  => 'required',    );}

然后运行:

composer dump-autoload

这时候,就可以尝试整个页面上的所有操作啦!新建,编辑,查看,删除,至此,pages管理部分全部完成!

大作业:目前Pages管理部分已经全部完成,但是Articles管理部分还是啥都没有,尝试模仿Pages的代码,完成一个跟Pages一样的管理系统。小提示:包含 控制器、视图和表单验证哦。等你完成了Articles管理部分,Laravel就真正入门啦!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索laravel
, 表单验证
pages
laravel 表单验证、laravel form表单、laravel form表单提交、laravel 表单提交、laravel 表单,以便于您获取更多的相关知识。

时间: 2024-10-01 00:58:53

Laravel 4 初级教程之Pages、表单验证_php实例的相关文章

Laravel 5框架学习之表单验证_php实例

在建立一个文章的时候,如果你什么都不输入直接提交,ok,你获得了一个空的文章,没有任何错误提示,这是不对的.在命令行下运行 php artisan 可以看到一个选项 make:request,新建一个form request类.在命令行执行 复制代码 代码如下: php artisan make:request CreateArticleRequest 生成的文件在 app/http/requests 目录下.在文件中我们可以看到两个方法: public function authorize()

php编程每天必学之表单验证_php技巧

本文实例讲解了php表单验证的实现方法,分享给大家供大家参考,具体内容如下 1.PHP表单处理 welcome.html <html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="name"><br> E-mail: <input type=&qu

表单验证正则表达式实例代码详解_javascript技巧

表单验证正则表达式具体内容如下所示: 首先给大家解释一些符号相关的意义      1.  /^$/ 这个是个通用的格式.          ^ 匹配输入字符串的开始位置:$匹配输入字符串的结束位置      2. 里面输入需要实现的功能.         * 匹配前面的子表达式零次或多次:        + 匹配前面的子表达式一次或多次:        ?匹配前面的子表达式零次或一次:        \d  匹配一个数字字符,等价于[0-9] 下面通过一段代码给大家分析表单验证正则表达式,具体代

详解表单验证正则表达式实例(推荐)_正则表达式

验证:!reg.test(value) 邮箱: 复制代码 代码如下: reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/i; 不包含中文: 复制代码 代码如下: reg = /.*[\u4e00-\u9fa5]+.*$/i; 身份证号: // 验证身份证号码 var city = {11:'北京',12:'天津',13:'河北',14:'山西',15:'内蒙古',21:'辽宁',22:'吉

详解表单验证正则表达式实例(推荐)

验证:!reg.test(value) 邮箱: 复制代码 代码如下: reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/i; 不包含中文: 复制代码 代码如下: reg = /.*[\u4e00-\u9fa5]+.*$/i; 身份证号: // 验证身份证号码 var city = {11:'北京',12:'天津',13:'河北',14:'山西',15:'内蒙古',21:'辽宁',22:'吉

ASP初级教程之ASP对表单和用户输入的处理

教程 在ASP中,你可通过VBScript和其他方式调用自程序. 实例: 使用method="get"的表单 如何使用Request.QueryString命令与用户进行交互. <html><body><form action="/example/aspe/demo_aspe_reqquery.asp" method="get">Your name: <input type="text"

表单验证代码实例:jquery.validate.js表单验证插件

文章简介:很好用的JQuery表单验证插件--jquery.validate.js. jquery.validate.js是JQuery旗下的一个验证插件,借助JQuery的优势,我们可以迅速验证一些常见的输入,并且可以自己扩充自己的验证方法.使用前请先下载必要的JQuery插件:jquery-1.4.2.min.js和jquery.validate.min.js. 下面演示如何使用jquery.validate.js插件进行表单的验证. 这是HTML表单:<form id="regFro

CodeIgniter表单验证方法实例详解_php实例

本文实例讲述了CodeIgniter表单验证方法.分享给大家供大家参考,具体如下: 1.在D:\CodeIgniter\system\application\views目录下写一个视图文件myform.php <html> <head> <title>My Form</title> </head> <body> <?php echo $this->validation->error_string;?> <

jQuery表单验证功能实例_jquery

本文实例讲述了jQuery表单验证功能.分享给大家供大家参考.具体如下: 这里使用jquery实现的表单验证效果,以Ajax方式验证你的表单是否填写正确,如果验证不通过,会将表单元素背景变成红色,并给出提示信息,简单实用,jquery表单验证功能已经有很多了,本款表单验证特效看上去更简单,不懂Ajax的朋友,或许直接套用即可实现无刷新表单验证功能. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-table-form-check-c