zoukankan      html  css  js  c++  java
  • Laravel5.1控制器小结

    控制器一般存放在appHttpControllers目录下,所有Laravel控制器都应继承基础控制器类。

    基础控制器

    • 基础控制器例子:
    <?php
    
    namespace AppHttpControllers;
    
    use AppUser;
    use AppHttpControllersController;
    
    class UserController extends Controller
    {
        /**
         * 显示指定用户的个人数据。
         *
         * @param  int  $id
         * @return Response
         */
        public function showProfile($id)
        {
            return view('user.profile', ['user' => User::findOrFail($id)]);
        }
    }
    
    • 路由指定控制器行为:
    Route::get('user/{id}', 'UserController@showProfile');
    
    • 路由指定控制器行为:
    Route::get('user/{id}', 'UserController@showProfile');
    

    RESTful资源控制器:

    • 资源控制器让你可以轻松地创建与资源相关的 RESTful 控制器,注册资源化路由:
    Route::resource('photos', 'PhotosController');
    

    这一条路由声明会创建多个路由,用来处理各式各样和相片资源相关的的 RESTful 行为。

    • 由资源控制器处理的行为:
    • 附加资源控制器
      如果想在资源控制器中默认的资源路由之外加入其它额外路由,则应该在调用Route::resource之前 定义这些路由。否则,由resource方法定义的路由可能会不小心覆盖你附加的路由:
    Route::get('photos/popular', 'PhotosController@method');
    Route::resource('photos', 'PhotosController');
    

    附:

    RESTful资源控制器的更新和删除操作调用起来比较特殊,特在此贴点代码:
    在view中调用删除操作:

    <form action="{{ url('admin/article/'.$article->id) }}" method="POST" style="display: inline;">
    {{ method_field('DELETE') }}
    {{ csrf_field() }}
    <button type="submit" class="btn btn-danger">删除</button>
    </form>
    

    在对应的控制器中进行删除操作:

    public function destroy($id)
    {
        Comment::find($id)->delete();
        return redirect()->back()->withInput()->withErrors('评论删除成功!');
    }
    

    在view中调用更新操作:

    <form action="{{ url('admin/article/'.$article->id) }}" method="POST">
        {{ method_field('PATCH') }}
        {{ csrf_field() }}
        <input type="text" name="title" class="form-control" required="required" placeholder="请输入标题" value="{{ $article->title }}">
        <br>
        <textarea name="body" rows="10" class="form-control" required="required" placeholder="请输入内容">{{ $article->body }}</textarea>
        <br>
        <button class="btn btn-lg btn-info">提交修改</button>
    </form>
    

    在对应的控制器中进行更新操作:

    public function update(Request $request,$id)
    {
        //数据验证
        $this->validate($request, [
            'title' => 'required|max:255',
            'body' => 'required',
        ]);
    
        $article = Article::find($id);
        $article->title = $request->get('title');
        $article->body = $request->get('body');
    
        if ($article->save()) {
            return redirect('admin/article')->withErrors('更新成功!');
        } else {
            return redirect()->back()->withInput()->withErrors('更新失败!');
        }
    }
    

    附加的这些代码只供参考,没有实际意义

  • 相关阅读:
    robotframework使用之 下拉框处理
    Python操作MySQL
    Python发送邮件
    Redis 常用命令
    安装htop教程及坑
    探索式测试-概述
    Git相关命令教程
    [精华][推荐]SSO CAS单点登录框架学习 环境搭建
    [精华][推荐]SSO CAS单点登录框架学习 搭建详细步骤及源码
    [精华][推荐]CAS实现单点登录实例源码
  • 原文地址:https://www.cnblogs.com/songziqing/p/5806690.html
Copyright © 2011-2022 走看看