Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Я кажется догадался, в openserver стоит php 5.6 наверно это и есть причина
Приветствую!
Пользуюсь дома openserver, a на работе homestead
Как в инструкции ставлю Laru:
"composer create-project --prefer-dist laravel/laravel blog"
Но на homestead ставится версия 5.7.13, а на OpenServer 5.4 говорит, что ставит из кэша
Думаю, ладно: composer clearchache
А он всё равно 5.4 ставит
В чём дело? как бороться?
Супер форум, сто лет такого не видел, чтобы в воскресенье вечером задать вопрос и !!!!!!!!!!! барабанная дробь - тебе ответели!!!
Ещё раз спасибо.
Уважаемый,
МАТОМ ТЕБЯ ПРОШУ ПОКАЖИ ВЕСЬ ФАЙЛ В ТЕГЕ [ CODE ]
Спасибо тебе друг, я понял свою ошибку middleware отсекало этот экшен
Покажи пожалуйста PostController@postComment. И в чем проявляется "несрабатывание"?
public function postComment(Request $request)
{
$comment = $request->all();
$this->validate($request, [
'text' => 'required',
]);
$comment['status'] = 1;
$comment['user_id'] = \Auth::user()->id;
$comment = Comment::create($comment);
Session::flash('flash_message', 'Comment successfully created!');
return redirect('posts/'.$comment['post_id']."#".$comment['id']);
}
Несрабатывание заключается в том , что экшен не вызывается, генерируется 404
POST запрос публикации комментария
Route::post('posts/comment', 'PostController@postComment');
Route::post('posts/comment', function() {
...
});
Первый вариант не работает, а вот второй срабатывает почему не пойму.
Объясните кто знает?
Concentum пишет:Извините туплю,
а как из роут функции вызвать метод контроллера, редиректом?Route::get('....', function ($id) {
$ctrl= new Контроллер();
return $ctrl->МетодКонтроллера($id);
});
Спасибо так всё работает!
в роут функцию, внутри уже по параметрам вызывать нужный метод контроллера
Извините туплю,
а как из роут функции вызвать метод контроллера, редиректом? или как то так?
Route::get('posts/tags/{tag}/page-{page}', function($tag, $page) {
PostController::index($tag, $page);
})->where(['page' => '[1-9]+[0-9]*', 'tag' => '\w+']);
Спасибо, я полагал, что раз параметры именованные то как то можно, ну нет так нет.
Здравствуйте уважаемые знатоки laravel
Подскажите пожалуйста.
Есть маршруты:
Route::get('posts/page-{page}', 'PostController@index')->where(['page' => '[1-9]+[0-9]*']);
Route::get('posts/tags/{tag}/page-{page}', 'PostController@index')->where(['page' => '[1-9]+[0-9]*', 'tag' => '\w+']);
В контроллере PostController есть экшен index определённый как:
public function index($tag = null, $page = null)
Так вот в первом варианте маршрута параметр {page} в экшен приходит в переменной $tag
Как явно указать порядок параметров?
Спасибо!
Вопрос снимается, сам дурак в таблице posts было определено поле tags (сначала хотел сделать по проще)
Помогите разобраться
есть 3 таблицы: posts, tags, post_tags
Они состоят в известных отношениях
Вот как определены отношения:
В модели post.php
public function tags()
{
return $this->belongsToMany('App\Tag', 'post_tags');
}
В модели tag.php
public function posts()
{
return $this->belongsToMany('App\Post', 'post_tags');
}
В контроллере PostController.php
$post = Post::findOrFail($id);
dd($post->tags); //Вот так вообще возвращает: ""
dd($post->tags()); //Вот так возвращает объект "BelongsToMany", но пустой
В контроллере TagController.php
$tag = Tag::whereRaw('url = ?', [$url])->firstOrFail();
dd($tag->posts); //Всё Ok как и ожидалось возвращает объект "Collection"
В чём может быть загвоздка?
Подскажите пожалуйста!
Страницы 1