Выбор 2 не показывает выбранные параметры. (Laravel)

Я использую плагин select2 jquery и привязку модели формы laravel для рендеринга данных с сервера.
Хотя все остальное работает нормально, теги, прикрепленные к сообщению, не отображаются в качестве выбранной опции.

должно быть что-то, о чем я не знаю, вот часть моего взгляда.

<div class="form-group">
{!! Form::label('tag_list','Tags:') !!}
{!! Form::select('tag_list[]', $tags,null,['id'=>'tag_list', 'class'=>'form-control','multiple']) !!}

</div>

// This is the select 2 script
$('#tag_list').select2({
'placeholder':'Choose Tags',
tags:true,
tokenSeparators:[",", " "],
createTag:function(newTag){
return{
id:'new:' + newTag.term,
text:newTag.term + '(new)'
};
}
});

И это функция getTagListAtrribute в модели Article

// Это функция getTagListAttribute

 public function getTagListAttribute(){
return $this->tags->lists('post_id')->all();
}

И я загружаю форму редактирования из контроллера следующим образом:

public function article_edit($slug){
// fetch the articles.
//$article = DB::table('articles')->where('slug',$slug)->first();

$article = Article::where('slug',$slug)->first();

/*echo '<pre>';
print_r($article->title);
die();*/
$tags = DB::table('tags')->lists('name','tag_id');
$categories=DB::table('categories')->lists('category_name','category_id');

return view('admin.pages.edit', compact('article','tags','categories'));
}

Я просто хочу, чтобы теги, связанные со статьей, были выбраны во время загрузки страницы, и я не смог этого сделать. Так что мне нужна помощь.

2

Решение

Ну, так как вы пометили вопрос как laravel-5.1, Внесены некоторые изменения в lists метод.

В Laravel 5.0. * Он возвращал только простой массив keys и / или values что вы проходите в lists метод. Больше информации здесь

В Laravel 5.1. * Он возвращает объект Collection. Больше информации — просто документация кода

Итак, решение, которое вы ищете:

В контроллере сделайте это:

$tags = DB::table('tags')->lists('name','tag_id')->toArray();

Или в файле представления сделайте это:

{!! Form::select('tag_list[]', $tags->toArray(), null,['id'=>'tag_list', 'class'=>'form-control','multiple']) !!}

И это должно помочь вам.

РЕДАКТИРОВАТЬ 1:

Удалить all() метод из getTagsListAttribute(), Это совсем не обязательно.

Почему вы используете DB Фасад для запроса tags Таблица ? Поскольку вы уже установили отношения, вы без необходимости выполняете SQL Statements, Избегайте этого столько, сколько сможете.

Вы должны получить это, просто сделав это:

$tags = $article->tags;

РЕДАКТИРОВАТЬ 2:

Вы уверены, что у вас есть tag_id колонка в tags Таблица ? Я сомневаюсь, что. Я полагаю, это опечатка. По ошибке вы должны были набрать tag_id вместо id, Пересмотрите это для подтверждения.

Надеюсь, что это помогает вам. Удачного кодирования. Приветствия.

3

Другие решения

Установить тег выбора формы, как это

{!! Form::select('tag_list', $tags, $selected, ['id'=>'tag_list', 'name'=>'tag_list[]','class'=>'form-control','multiple']) !!}

Передайте идентификаторы, которые будут выбраны как массив в третьем ($ selected).
Так что если

  $tags = ['1'=>'one', '2'=>'Two', '3'=>'Three']

и если вы хотите выбрать один и три, передайте эти идентификаторы в виде массива в форму, выбранную в качестве третьего параметра.

итак, $ selected = [1,3];

0

По вопросам рекламы [email protected]