#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
представление, которое вы получаете из вложенной папки, а не из rootyourwebsite.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}')
.. спасибо, это была проблема.