查看内容

初级教程之Pages

  • 2020-02-09 12:51
  • 编程人生
  • Views

1. 创设Pages管理职能

运营命令:

php artisan generate:controller admin/PagesController

修改PagesController.php 内容:

<?php
namespace AppControllersAdmin;
use Page;
use Input, Notification, Redirect, Sentry, Str;
use AppServicesValidatorsPageValidator;
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 AppControllersAdminPagesController 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 里面妥当的岗位分别大增上面两行:

'KrucasNotificationNotificationServiceProvider'

'Notification' => 'KrucasNotificationFacadesNotification'

适用的岗位超多少人不明了,招致不胜枚贡士鬼使神差了不当,解决方法也十分轻松:请直接参考笔者的亲自去做代码:https://github.com/johnlui/Learn-Laravel-4/blob/master/app/config/app.php

刷新,借使你看见以下分界面:

图片 1

恭喜你~ Pages的田管页面完毕了!

2. 表单验证

Laravel提供了原生的十一分好用的表单验证作用,不过一时验证法规供给复用,所以大家将动用苍劲的命名空间来兑现代码复用,同有时间将显示Laravel之外的,PHP的命名空间端来的苍劲的组件化功用和模块解耦,HMVC什么的已经落伍啊。

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

"app/services"

那是在报告composer:来把本身上边包车型大巴具有文件和子文件夹中的全数文件合併到您的命名空间树上吧! 那样就让 app/services 下的类能够注解本人的命名空间了,子文件夹中的文件也得以注脚的亲善归于子命名空间了。那么些文件夹将承载大家的表单验证类群,当然也能够承袭多数别的构件和模块,达成完全解耦。

拉长完结后,新建app/services/validators/Validator.php 文件:

<?php
namespace AppServicesValidators;
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 文件:

<?php
namespace AppServicesValidators;
class PageValidator extends Validator {
    public static $rules = array(
        'title' => 'required',
        'body'  => 'required',
    );
}

接下来运营:

composer dump-autoload

那儿,就可以尝试任何页面上的兼具操作啦!新建,编辑,查看,删除,至此,pages管理有个别全体产生!

大作业:近日Pages管理某个已经全体完事,不过Articles管理一些照旧甚都未有,尝试模仿Pages的代码,完结三个跟Pages相仿的治本种类。小提醒:富含调控器、视图和表单验证哦。等你成功了Articles管理有些,Laravel就真的入门啦!

上一篇:初级教程之视图 下一篇:没有了