laravel路线和控制器

时间:2016-10-22 23:11:51

标签: php laravel

我是一个新的laravel用户和一个管理页面,它做更新删除和插入我的问题是我不知道如何在路由中调用此功能。 注意:所有这些选项都在一个页面上运行(管理员)。

所以请任何人帮助我吗?!

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use DB;
class BlogPostController extends Controller
{ 
/**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index(){
    $date = date('Y-m-d');
        $time = time('H:i:s'); 
        /*$sections = ['History' => 'history.png','Electronics' => 'electronics.png','Electrical' => 'electrical.png','Science' => 'science.png',
                    'Art'=>'ARt.png','Database'=>'database.png','Irrigation'=>'irrigation.png','Novel'=>'Novel.png','Style'=>'Stsyle.png']; 
        */
        $sections = DB ::table('sections')->get();
        return view('libraryViewsContainer.library')->withSections($sections)->withDate($date)->withTime($time);
    }


    /**
     * Show the form for creating a new resource.
     *
     * @return Response
     */
    public function create(){
        //return View::make('posts.create');
        return '<center><h1>Creating new section in the library!</h1></center>';
    }


    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store( Request $request){
        $section_name = $request->input('section_name');
        $file = $request->file('image');
        $destinationPath = 'images';
        $filename = $file->getClientOriginalName();
        $file->move($destinationPath,$filename);

        DB ::table('sections')->insert(['section_name'=>$section_name,'image_name'=>$filename]);
        return redirect('admin');
    }


    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function show($id){
    //  $post = Post::find($id);

    //      return View::make('posts.show')->with('post', $post);
    }


    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function edit($id){
    //  $post = Post::find($id);

    //      return View::make('posts.edit')->with('post', $post);
    }


    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function update($id,Request $request){

          $section_name = $request->input('section_name');

        DB ::table('sections')->where('id',$id)->update(['section_name'=>$section_name]);
        return redirect('admin');
    }


    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function destroy($id){
        DB :: table('sections')->where('id',$id)->delete();
        return redirect('admin');
    }

     public function admin()
    {

        $sections = DB ::table('sections')->get();
        return view('libraryViewsContainer.admin',['sections'=>$sections]);
    }

 }

2 个答案:

答案 0 :(得分:0)

不完全确定问题,但是您在网络组下列出routes.php中的路由(因此它应用默认检查)。

当您拥有资源时,他们将使用CRUD操作(创建,读取,更新,删除),并且将对应于类中的默认操作。否则,请创建自己的函数名称,并放置单独的路径。

路由::群组([&#39;中间件&#39; =&gt; [&#39;网络&#39;,&#39;身份验证&#39;]],功能(){

    Route::resource('/user', 'UserController');

}

另一种选择是直接在路线中调用方法:

    Route::get('/auth/login', '\App\Http\Controllers\Auth\AuthController@getLogin');
    Route::any('/datafeed/{id}/validate', 'DataFeedController@validateQuery');

您会注意到{id},它是您选择的函数中可用的变量,即函数validateQuery($ id);

以下是一个完整的例子:

            class UserController extends BaseController
            {

                public function __construct(User $model)
                {
                    parent::__construct($model);
                }


                /**
                 * Display a listing of the resource.
                 *
                 * @return \Illuminate\Http\Response
                 */
                public function index()
                {
                    $collection = $this->model->all();
                    return view('user.index')->with('collection', $collection);
                }

                /**
                 * Show the form for creating a new resource.
                 *
                 * @return \Illuminate\Http\Response
                 */
                public function create()
                {
                    return view('user.create');
                }

                /**
                 * Store a newly created resource in storage.
                 *
                 * @param  \Illuminate\Http\Request  $request
                 * @return \Illuminate\Http\Response
                 */
                public function store(Request $request)
                {
                    $input = Input::except(['_method', '_token']);
                    $connector = $this->model->create($input);
                    return redirect()->action('UserController@show', [$connector->id]);
                }

                /**
                 * Display the specified resource.
                 *
                 * @param  int  $id
                 * @return \Illuminate\Http\Response
                 */
                public function show($id)
                {
                    $connector = $this->model->findOrFail($id);
                    return view('user.show')->with('connector', $connector);
                }

                /**
                 * Update the specified resource in storage.
                 *
                 * @param  \Illuminate\Http\Request  $request
                 * @param  int  $id
                 * @return \Illuminate\Http\Response
                 */
                public function edit($id)
                {
                    $connector = $this->model->findOrFail($id);
                    return view('user.edit')->with('connector', $connector);
                }



                /**
                 * Show the form for editing the specified resource.
                 *
                 * @param  int  $id
                 * @return \Illuminate\Http\Response
                 */
                public function update(Request $request, $id)
                {

                    $input = Input::except(['_method', '_token']);
                    $connector = $this->model->findOrFail($id);
                    $connector->update($input);
                    return redirect()->action('UserController@show', [$id]);

                }


                /**
                 * Remove the specified resource from storage.
                 *
                 * @param  int  $id
                 * @return \Illuminate\Http\Response
                 */
                public function destroy($id)
                {
                    $currentID = Auth::user();
                    $user = $this->model->findOrFail($id);

                    if ($currentID->id != $user->id) {
                        $user->delete();
                    } else {
                        Session::flash('flash_message', "You cant delete your own account!");
                        Session::flash('flash_type', 'alert-danger');
                    }

                    return redirect()->action('UserController@index');
                }

另一个自定义路线示例:

    Route::any('/datafeed/{id}/execute', 'DataFeedController@execute');


        public function execute($id, $test = false) {
            $results = $this->executeQuery($id, $test);
            return view('datafeed.execute')->with('results', $results);

        }

答案 1 :(得分:0)

我不完全确定您的计划(或者即使您已完全阅读文档?)但您可以通过在routes.php或{{1}中执行类似以下操作来访问这些功能(取决于您的版本)文件:

Routes\web.php

Route::get('/blog/create', 'BlogPostController@create');

第一部分是定义路由,第二部分是说明当地址栏中匹配此路由时,应该在定义的控制器上运行什么方法。它并不总是必须Route::get('/blog/article/{id}', 'BlogPostController@show');个请求,您可以执行getgetpostpatch