2016-07-31 2 views
0

Я новичок в Laravel и у меня возникают некоторые проблемы с классом маршрутовLaravel 5.2 маршруты не работает должным образом

Вот мой routes.php

Route::get('/', function() { 
    return view('welcome'); 
}); 

Route::auth(); 

Route::get('/home', '[email protected]'); 

Route::resource('/dashboard', 'DashboardController'); 
Route::resource('/dashboard/users', 'DashboardUsersController'); 
Route::resource('/dashboard/posts', 'DashboardPostsController'); 

Все вышеперечисленные маршруты работают кроме

app.dev/dashboard/users/index 
app.dev/dashboard/posts/index 

каждый маршрут, который я создаю как

Route::get('dashboard/users/import', function(){ 
    return 'Importing a user'; 
}); 

или

Route::get('dashboard/users', '[email protected]'); 

Я уже пробовал некоторые предложения, которые я нашел здесь, как очистка кэша, вид и маршрут, но никто не работал, разрешение моей папке проекта является 777

Вот мой DashboardUsersController .php

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class DashboardUsersController extends Controller 
{ 
    /** 
    * Display a listing of the resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index() 
    { 
     return view('admin.users.index'); 
    } 


    public function getUsers() 
    { 
     return view('admin.users.index'); 
    } 


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

    /** 
    * Store a newly created resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @return \Illuminate\Http\Response 
    */ 
    public function store(Request $request) 
    { 
     // 
    } 

    /** 
    * Display the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function show($id) 
    { 
     // 
    } 

    /** 
    * Show the form for editing the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function edit($id) 
    { 
     return view('admin.users.index'); 
    } 

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

    /** 
    * Remove the specified resource from storage. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function destroy($id) 
    { 
     // 
    } 
} 

Редактировать PHP мастерового маршрута: список

+--------+-----------+------------------------------+-------------------------+-----------------------------------------------------------------+------------+ 
| Domain | Method | URI       | Name     | Action               | Middleware | 
+--------+-----------+------------------------------+-------------------------+-----------------------------------------------------------------+------------+ 
|  | GET|HEAD |/       |       | Closure               | web  | 
|  | POST  | dashboard     | dashboard.store   | App\Http\Controllers\[email protected]     | web  | 
|  | GET|HEAD | dashboard     | dashboard.index   | App\Http\Controllers\[email protected]     | web  | 
|  | GET|HEAD | dashboard/create    | dashboard.create  | App\Http\Controllers\[email protected]     | web  | 
|  | POST  | dashboard/posts    | dashboard.posts.store | App\Http\Controllers\[email protected]    | web  | 
|  | GET|HEAD | dashboard/posts    | dashboard.posts.index | App\Http\Controllers\[email protected]    | web  | 
|  | GET|HEAD | dashboard/posts/create  | dashboard.posts.create | App\Http\Controllers\[email protected]   | web  | 
|  | PUT|PATCH | dashboard/posts/{posts}  | dashboard.posts.update | App\Http\Controllers\[email protected]   | web  | 
|  | DELETE | dashboard/posts/{posts}  | dashboard.posts.destroy | App\Http\Controllers\[email protected]   | web  | 
|  | GET|HEAD | dashboard/posts/{posts}  | dashboard.posts.show | App\Http\Controllers\[email protected]    | web  | 
|  | GET|HEAD | dashboard/posts/{posts}/edit | dashboard.posts.edit | App\Http\Controllers\[email protected]    | web  | 
|  | GET|HEAD | dashboard/users    | dashboard.users.index | App\Http\Controllers\[email protected]   | web  | 
|  | POST  | dashboard/users    | dashboard.users.store | App\Http\Controllers\[email protected]    | web  | 
|  | GET|HEAD | dashboard/users/create  | dashboard.users.create | App\Http\Controllers\[email protected]   | web  | 
|  | DELETE | dashboard/users/{users}  | dashboard.users.destroy | App\Http\Controllers\[email protected]   | web  | 
|  | GET|HEAD | dashboard/users/{users}  | dashboard.users.show | App\Http\Controllers\[email protected]    | web  | 
|  | PUT|PATCH | dashboard/users/{users}  | dashboard.users.update | App\Http\Controllers\[email protected]   | web  | 
|  | GET|HEAD | dashboard/users/{users}/edit | dashboard.users.edit | App\Http\Controllers\[email protected]    | web  | 
|  | PUT|PATCH | dashboard/{dashboard}  | dashboard.update  | App\Http\Controllers\[email protected]     | web  | 
|  | DELETE | dashboard/{dashboard}  | dashboard.destroy  | App\Http\Controllers\[email protected]    | web  | 
|  | GET|HEAD | dashboard/{dashboard}  | dashboard.show   | App\Http\Controllers\[email protected]     | web  | 
|  | GET|HEAD | dashboard/{dashboard}/edit | dashboard.edit   | App\Http\Controllers\[email protected]     | web  | 
|  | GET|HEAD | home       |       | App\Http\Controllers\[email protected]      | web,auth | 
|  | GET|HEAD | login      |       | App\Http\Controllers\Auth\[email protected]   | web,guest | 
|  | POST  | login      |       | App\Http\Controllers\Auth\[email protected]     | web,guest | 
|  | GET|HEAD | logout      |       | App\Http\Controllers\Auth\[email protected]     | web  | 
|  | POST  | password/email    |       | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | POST  | password/reset    |       | App\Http\Controllers\Auth\[email protected]    | web,guest | 
|  | GET|HEAD | password/reset/{token?}  |       | App\Http\Controllers\Auth\[email protected]  | web,guest | 
|  | POST  | register      |       | App\Http\Controllers\Auth\[email protected]    | web,guest | 
|  | GET|HEAD | register      |       | App\Http\Controllers\Auth\[email protected] | web,guest | 
+--------+-----------+------------------------------+-------------------------+-----------------------------------------------------------------+------------+ 

Как я сказал, что все вышеуказанные маршруты работают, кроме

/dashboard/users 
/dashboard/posts 

, которые должны быть маршрутизации в index способе DashboardUsersController и DashboardPostsController, и каждый пользовательский маршрут, который я создаю.

Когда я удалил Route::resource, работал Route::get('dashboard/users', '[email protected]');, так может быть ошибка? или что-то, что я забыл настроить?

Edit 2

Когда я попытался

Route::get('dashboard/users', '[email protected]'); 

я удалил

Route::resource('/dashboard/users', 'DashboardUsersController'); 

, чтобы убедиться, что это не конфликт, и до сих пор не работал

+0

Использование 'php artisan route: list' для проверки маршрутов, которые вы определяете. – Jonathan

+0

Что произойдет, если вы измените порядок так, чтобы« Route :: resource ('/ dashboard', 'DashboardController'); находится внизу? – joshhunt

+0

Я отредактировал свой ответ, где объясню, что происходит, когда вы используете Route :: resource, чтобы мой ответ был завершен. Надеюсь, это поможет. – Michal

ответ

0

Для простоты используйте Route::get для нормального m этапов в контроллере и Route::post для методов, которые принимают $_POST данные из формы.

Второй параметр Route::get/Route::post метод ControllerName @ MethodName. Попытайтесь изменить его соответствующим образом.

Старайтесь не забывать пространство имен.

Edit: При использовании Route::resource вы фактически генерируя все возможные RESTful маршруты для вашего контроллера. Вы не можете сделать это более одного раза. Вот почему изменение Route::resource до Route::get действительно работало.

Вы можете найти более подробную информацию здесь: https://laravel.com/docs/5.2/controllers#restful-resource-controllers

+0

Да, когда я удалил все ** Route :: resource ** работал, почему, когда я создаю более 1, маршруты перестают нормально работать, это ошибка? –

+0

Честно говоря, я тоже научился чему-то новому. :) Отсюда https://laravel.com/docs/5.2/controllers#restful-resource-controllers Я понял, что при использовании Route :: resource u фактически добавляют все возможные маршруты RESTfull к вашему контроллеру. Вы не можете сделать это более одного раза. – Michal

+0

Вот почему это не совсем ответ, полезный или нет. Проблема в том, что он создает противоречивый маршрут, как я выделил в своем ответе – Jonathan

0

Вы на самом деле не очень понятно, на что работает и что не работает. Вы также добавляете больше кода для иллюстративных целей, и нам нужно заполнить пробелы в предположениях относительно того, что вы делаете.

Когда вы определяете ресурс, например. Route::resource('/users', 'UserController'); Вы получаете следующие маршруты:

|  | GET|HEAD | users     | users.index | App\Http\Controllers\[email protected]      | web  | 
|  | POST  | users     | users.store | App\Http\Controllers\[email protected]      | web  | 
|  | GET|HEAD | users/create   | users.create | App\Http\Controllers\[email protected]      | web  | 
|  | GET|HEAD | users/{users}   | users.show | App\Http\Controllers\[email protected]      | web  | 
|  | PUT|PATCH | users/{users}   | users.update | App\Http\Controllers\[email protected]      | web  | 
|  | DELETE | users/{users}   | users.destroy | App\Http\Controllers\[email protected]      | web  | 
|  | GET|HEAD | users/{users}/edit  | users.edit | App\Http\Controllers\[email protected]      | web  | 

Если затем создать еще один маршрут Route::get('users', '[email protected]'); он будет конфликтовать с первым маршрутом, определенным вашего resource маршрута.

Поэтому вам нужно убедиться, что у вас нет противоречивых маршрутов.

Смежные вопросы