Home  >  Article  >  php教程  >  Laravel 4 初级教程之Pages、表单验证

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

WBOY
WBOYOriginal
2016-06-06 20:18:491665browse

本篇教程是本系列的完结篇,要做的是Pages的详细管理功能,表单验证以及命名空间的深度使用,和一个更好用的通知组件,并且布置一个简单的大作业。

1. 构建Pages管理功能

运行命令:

php artisan generate:controller admin/PagesController

修改PagesController.php 内容:

namespace 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');
    }
}

然后,打开: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. 表单验证

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn