2016-05-25 2 views
1
Route::get('/', '[email protected]'); 
Route::get('wiki/{category_slug}', '[email protected]'); 
Route::get('wiki/{category_slug}/{article_slug}', '[email protected]'); 
Route::resource('wiki/article', 'ArticleController'); 

Когда я пытаюсь получить доступ к wiki/article/create, я получаю сообщение об ошибке: Trying to get property of non-object и это, кажется, с использованием 3-го маршрута at ArticleController->show('article', 'create').Laravel маршрут, используя неправильный контроллер

Есть ли какие-либо ограничения на 3-м маршруте (и 2-й, поскольку wiki/article для хранения не будет использовать правый контроллер)?

+1

Как связано это регулярное выражение? –

+0

Прошу показать код 'ArticleController'. –

+0

@ThomasAyoub Хорошо, я подумал, что вам нужно добавить ограничение (которое является регулярным выражением) на маршрут, чтобы исключить слово 'article' из' {category} ', чтобы он мог перейти к правильному маршруту – frosty

ответ

0

При попытке http://domain.com/wiki/article/create ваш код ищет ваши маршруты и находя, что:

Route::get('wiki/{category_slug}/{article_slug}','[email protected]'); 

Это то, что вы просите, как {category_slug} и {article_slug} не имеют ограничивающего и может быть что угодно, в том числе «статья» и «создать».

Попробуйте изменить этот адрес маршрута:

Route::get('wiki/category/{category_slug}', '[email protected]'); 
    Route::get('wiki/category/{category_slug}/article/{article_slug}', '[email protected]'); 

Таким образом, вы будете иметь уникальные маршруты для разных контроллеров.

Если вы действительно хотите использовать адрес, который вы можете добавить регулярное выражение Ограничить к слову «статьи», как это:

Route::get('wiki/{category_slug}', '[email protected]')->where(['category_slug'=>'\b(?:(?!article)\w)+\b']); 
    Route::get('wiki/{category_slug}/{article_slug}', '[email protected]')->where(['category_slug'=>'\b(?:(?!article)\w)+\b']); 
+0

Это будет хорошо работать, но добавляет лишний беспорядок в URI - есть ли способ исключить слово «статья» с ограничением регулярного выражения, чтобы маршрут не пытался найти категорию под названием «статья»? – frosty

+0

@frosty ответ обновлен. –

+0

Спасибо! Работает хорошо – frosty

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