如何路由到laravel控制器方法

时间:2014-04-23 19:46:59

标签: php laravel-4

我对laravel4很新,但有一些codeigniter背景。我试图找出如何使用url路由到控制器方法

我的网址应该是

/admin/products{controller_name}/parser{controller_method}

比控制器

<?php namespace App\Controllers\Admin;

use App\Models\Product;
use Image, Input, Notification, Redirect, Sentry, Str;

    class ProductsController extends \BaseController {

        public function index()
        {
            return \View::make('admin.products.index');
        }

            public function parser()
        {
            return \View::make('admin.products.parser');
        }

    }


Route::group(array('prefix' => 'admin', 'before' => 'auth.admin'), function()
{

        Route::resource('products',           'App\Controllers\Admin\ProductsController');
        Route::resource('products/parser',    'App\Controllers\Admin\ProductsController@parser');

});

1 个答案:

答案 0 :(得分:3)

当您使用Route::resource方法时,您实际上只在一次通话中创建了许多不同的路线:

  1. GET / admin / products
    • 映射到控制器上的index方法
  2. GET / admin / products / create
    • 映射到控制器上的create方法
  3. POST / admin / products
    • 映射到控制器上的store方法
  4. GET / admin / products / {id}
    • 映射到控制器上的show方法
  5. GET / admin / products / {id} / edit
    • 映射到控制器上的edit方法
  6. PUT / PATCH / admin / products / {id}
    • 映射到控制器上的update方法
  7. DELETE / admin / products / {id}
    • 映射到控制器上的destroy方法
  8. 为了创建 7个不同的路由,您需要做Route::resource('resource', 'Controller'),这是一种在创建API时非常有用的便捷方法。

    所有这一切,我都不认为这是你想要做的。相反,我认为您只想使用常规get和/或post方法:

    // Here is a single GET route
    Route::get('products', 'App\Controllers\Admin\ProductsController@index');
    // Here is a single POST route
    Route::post('products/parser', 'App\Controllers\Admin\ProductsController@parser');
    

    docs中查看有关Laravel资源控制器的更多信息。

    作为旁注,您可以使用Artisan的routes命令查看应用程序当前知道的所有路径:

    $ php artisan routes
    

    您可以通过运行该命令并查找给定路由映射到的控制器上的哪种方法来验证路由是否已正确设置。