Ошибка Laravel Symfony Component HttpKernel Exception NotFoundHttpException

#php #laravel

#php #laravel

Вопрос:

Я прочитал другие вопросы на этом форуме, чтобы решить эту проблему, но мне ничего не помогло.

Я получаю эту ошибку только в одной папке, в другой папке laravel работает идеально без ошибок. Ошибка:

Symfony Component HttpKernel Exception NotFoundHttpException

Код, который я использую. homa.blade.php

 <section>
    <h2><a href="{{ URL::action('post-show', $post->slug) }}">{{ $post->title }}</a></h2>
    {{ Markdown::parse(Str::limit($post->body, 300)) }}
    <a href="{{ URL::action('post-show', $post->slug) }}">Read more amp;rarr;</a>
</section>
  

routes.php

 Route::get('/posts/{$slug}', array(
    'as' => 'post-show',
    'uses' => 'PostController@getShow'
));
  

и контроллер PostController.php

 <?php

class PostController extends BaseController {

    public function getShow($slug) {
        echo 'Tets';
    }
}
  

Это весь мой код, не более того.

Комментарии:

1. Является ли ваше homa.blade.php представление, которое вы получаете из вложенной папки, а не из root yourwebsite.com/ ?

2. для youwebsite.com укоренения, но для youwebsite.com/posts/topic-name-here получения ошибки

3. Итак, URL-адрес, который вы получили, <a href="..."> правильный, но переход к этому URL-адресу вызывает проблему, верно? Или это неправильно из созданного URL?

4. проблема была в маршруте, с которым я привык Route::get('/posts/{$slug}') , $ я должен использовать без. 🙂

Ответ №1:

На самом деле вы должны использовать (удалить $ из {$slug} ):

 Route::get('/posts/{slug}', array(
    'as' => 'post-show',
    'uses' => 'PostController@getShow'
));
  

Также измените:

 <a href="{{ URL::action('post-show', $post->slug) }}">Read more amp;rarr;</a>
  

К этому:

 <a href="{{ URL::route('post-show', $post->slug) }}">Read more amp;rarr;</a>
  

Или используйте route вспомогательную функцию:

 <a href="{{ route('post-show', $post->slug) }}">Read more amp;rarr;</a>
  

Ответ №2:

URL::action (как следует из названия) ожидает действие, а не имя маршрута при передаче.

публичное строковое действие (string $action, mixed $parameters = array(), bool $absolute = true)

Вы должны использовать route():

 URL::route('post-show', array($post->slug))
  

общедоступный строковый маршрут(string $name, mixed $parameters = array(), bool
$absolute = true, Route $route = null)

Комментарии:

1. Я согласен. В дополнение к этому, я не уверен, но это Route::get('/posts/{$slug}'...) также может быть причиной проблемы, работает ли это со знаком $?

2. все еще не работает, в предыдущем проекте для меня URL::action() тоже работал.

3. Хм, я никогда не проверял это, но я предполагаю, что это рассматривается как строка

4. черт возьми, откуда мне приснилось, что нужно использовать с $ . Route::get('/posts/{$slug}') .. спасибо, это была проблема.