php - 选择 2 不显示所选选项。 (拉拉维尔)

标签 php jquery laravel laravel-5.1 jquery-select2

我正在使用 select2 jquery 插件和 laravel 表单模型绑定(bind)来渲染来自服务器的数据。 虽然其他一切工作正常,但它不会将已附加到帖子的标签呈现为选定选项。

一定有什么我不知道的,这是我的看法。

<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 函数

//这是getTagListAttribute函数

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

我从 Controller 加载编辑表单,如下所示:

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'));
    }

我只想在页面加载时选择与文章关联的标签,但我无法做到这一点。所以我需要帮助。

最佳答案

好吧,既然您已将问题标记为 laravel-5.1lists 方法进行了一些更改。

在 Laravel 5.0.* 中,它仅返回您在 lists 方法中传递的 keys 和/或 values 的普通数组。 More info here

在 Laravel 5.1.* 中,它返回一个 Collection 对象。 More Info - Just the code documentation

因此,您正在寻找的解决方案是:

在 Controller 中,执行以下操作:

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

或者在 View 文件中执行以下操作:

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

这应该对你有用。

编辑1:

getTagsListAttribute() 中删除 all() 方法。这根本不是必需的。

为什么使用DB Facade 来查询tags 表?由于您已经建立了关系,因此无需执行 SQL 语句。尽可能避免这种情况。

您应该通过简单地执行以下操作来获得它:

$tags = $article->tags;

编辑2:

您确定 tags 表中有 tag_id 列吗?我不信。我想这一定是一个拼写错误。您一定是错误地输入了 tag_id 而不是 id。交叉验证以确认。

希望这对您有帮助。快乐编码。干杯。

关于php - 选择 2 不显示所选选项。 (拉拉维尔),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36645323/

相关文章:

php - 在 Kohana PHP 框架中启用 PECL HTTP

java - 进行简单回调的最佳方法

php - 使用 php 和 mysql 上传图像并调整大小而不变形图像

php - nginx php-fpm 无法打开流权限被拒绝

javascript - 如何添加一个div作为另一个div的背景?

javascript - 为什么我的 javascript 不更新 Opencart Category.tpl 中的数量

javascript - 单击带有 getElementById 的表单提交后显示弹出窗口

.htaccess - Laravel + AngularJS 将路由传递给 Angular

php - 如何获取总数量并将其发送到另一个表(Laravel)

javascript - 将数据从 javascript 变量传递到 PHP 变量