Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 31.03.2016 16:21:09

Хелпер link_to_route

Создаю список статей, и нужно мне чтобы каждое название было ссылкой на определенную статью. Ссылка на статью у меня вот какая:
Route::get('post/{post}',       ['as' => 'post.show', 'uses' => 'PostController@show']);

Вывести ссылку хочу при помощи хелпера.
вот примерно так: {!! link_to_route('posts', 'Главная') !!} но это ссылка на список, где нету изменяющегося параметра {post}
как передать значение этого самого {post} при помощи хелпера? не хочу делать обычной ссылкой.

{!! link_to_route('post.show', '$post->title') !!} вот примерно такой у меня роут и нужно кудато всобачить $post->slug (как определение статьи), но понять немогу куда, а в доке нету этого.

Не в сети

#2 31.03.2016 16:36:21

Re: Хелпер link_to_route

Это 4 ларавел?
в 5 нет уже link_to_route
Значит если пока и работает, то скоро выпилят
В 4 версии есть документация для нее https://laravel.com/docs/4.2/helpers
link_to_route('route.name', $title, $parameters = array(), $attributes = array());

Параметры роута массивом передаются третьим параметром

Не в сети

#3 31.03.2016 17:38:05

Re: Хелпер link_to_route

5 laravel. устанавливал хелпер дополнительно, по умолчанию не работал. сделал, работает, но немного не так как в доке
{!! link_to_route('post.edit', 'Edit', $post->slug) !!}

И если его нет в 5, то на что его заменили? Ато у меня на сайте все ссылки на этом хелпере, лучше уже буду перестраивать по нормальному.
Как предпочтительно сейчас делать внутренние ссылки?

Не в сети

#4 31.03.2016 17:42:31

Re: Хелпер link_to_route

Этот хелпер наверное частью HTML  был, который уехал в collective?

Сейчас есть просто route https://laravel.com/docs/5.2/helpers#method-route

Не в сети

#5 31.03.2016 17:55:20

Re: Хелпер link_to_route

да, часть Html. действительно подключал хелпер по советам еловека который любил ларавел 4))
сейчас написал вот так: <a href="{!! route('post.edit', ['id' => $post->slug]) !!}">Edit</a> верно?

Изменено Nifler (31.03.2016 17:56:54)

Не в сети

#6 31.03.2016 17:58:41

Re: Хелпер link_to_route

https://laravelcollective.com/docs/5.2/html

Nifler пишет:

да, часть Html. действительно подключал хелпер по советам еловека который любил ларавел 4))
сейчас написал вот так: <a href="{!! route('post.edit', ['id' => $post->slug]) !!}">Edit</a> верно?

Если работает, то  верно )

По идее так должно быть
['post' => $post->slug] Согласно имени переменной в твоем роуте

Не в сети

#7 01.04.2016 14:59:00

Re: Хелпер link_to_route

работает и так. кажется неважно название переменной. просто вставляет значение в переменную.

Не в сети

#8 01.04.2016 15:13:08

Re: Хелпер link_to_route

Когда она одна - возможно..

Не в сети

#9 01.04.2016 17:48:37

Re: Хелпер link_to_route

еще консультативный вопрос.
сейчас у меня статьи добавляются вот так
    public function store(Post $postModel, Request $request)
    {
    $post= new Post;       
    $post=$postModel->create($request->all());               
    $post->save();           
        return redirect()->route('posts');
    }

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

Не в сети

#10 01.04.2016 18:14:31

Re: Хелпер link_to_route

Зачем тебе два объекта?
один ты через DI создаешь
Post $postModel
второй руками  $post= new Post;
и сразу его переопределяешь?

Можно делать так вполне (не забудь прописать fillable)

И не забудь валидацию добавить

Не в сети

#11 08.05.2016 21:40:05

Булат

Re: Хелпер link_to_route

public function store(Post $postModel, Request $request)
    {
        $this->validate($request, [
            'title' => 'required|unique:posts|max:255',
            'slug' => 'required|unique:posts|max:255',
            'excerpt' => 'required|unique:posts|max:255',
            'content' => 'required|unique:posts|max:255',
            'published_at' => 'required|max:255',
        ]);

        $postModel = $postModel->fill($request->all());
        if($postModel->published == "on"){
            $postModel->published = 1;
        }
        else {
            $postModel->published = 0;
        }

        $postModel->save();

        return redirect()->route('posts');
    }

Подвал раздела