【问题标题】:PHP: Call to a member function contains() on stringPHP:在字符串上调用成员函数 contains()
【发布时间】:2019-09-26 20:54:51
【问题描述】:

我有一个简单的 crud 应用程序,我希望用户能够根据需要添加标签。

我正在使用这个插件eloquent-taggable

我已按照 GitHub 文档的说明进行操作。

这是我的控制器

public function store(Request $request)
{

    $pages =new PageList([
        'pagetitle' => $request->get('pagetitle'),
        'articlelist' => $request->get('articlelist'),
        'tags' => $request->get('tags'),
        'status' => $request->get('status'),
        'prebid' => $request->get('prebid'),
    ]);

    $pages->save();

    $tags =explode(',', $request->tags);
    $pages->tag($tags);
    $pages->save();

    return redirect('/pages')->with('success', 'data saved!');
}

更新

当我做dd($tags); 时,我明白了

array:2 [▼
  0 => "dfdf"
  1 => "hjhjhj"
]

更新

这是dd($request->get('tags'));的结果

现在当我添加标签并单击按钮保存时,我收到以下错误

Symfony\Component\Debug\Exception\FatalThrowableError (E_ERROR) 在字符串上调用成员函数 contains()

我在代码中做错了什么?

【问题讨论】:

  • @user996422 show $request->tags output here..
  • 检查我的问题的更新
  • 请分享截图
  • $request->get('tags') 中有什么内容?
  • 你能分享堆栈跟踪吗?

标签: php html laravel


【解决方案1】:

我不熟悉这个库,但我认为你不需要再次保存模型,标签也需要修剪,所以试试这个:

public function store(Request $request)
{

    $pages =new PageList([
        'pagetitle' => $request->get('pagetitle'),
        'articlelist' => $request->get('articlelist'),
        'tags' => $request->get('tags'),
        'status' => $request->get('status'),
        'prebid' => $request->get('prebid'),
    ]);

    $pages->save();

    $tags =explode(', ', $request->tags); //note the change here from ',' to ', '
    $pages->tag($tags);//no need to save model again

    return redirect('/pages')->with('success', 'data saved!');
}

看起来像是一个已知问题,特定于插件,请在此处查看问题:https://github.com/cviebrock/eloquent-taggable/issues/55

【讨论】:

  • 还是一样,`在字符串上调用成员函数 contains()`
  • 这是我的仓库https://github.com/throne1986/royalad-dahsboard/blob/master/app/Http/Controllers/PageListController.php
  • 查看我在回答中给出的问题链接
  • 我正在检查,但我看不到任何解决方案:(
  • 您提供的链接说的是 null 不是字符串问题 :(
【解决方案2】:

在调试和谷歌搜索 plust stckoverflow 后,我找到了解决方案

这是我的解决方案

public function store(Request $request)
{

    $pages =new PageList([
        'pagetitle' => $request->get('pagetitle'),
        'articlelist' => $request->get('articlelist'),
        // 'tags' => $request->get('tags'), // I removed this 
        'status' => $request->get('status'),
        'prebid' => $request->get('prebid'),
    ]);

    // $tags =explode(', ', $request->tags); //i removed this
    $pages->tag($pages->tags);//I added this 

    return redirect('/pages')->with('success', 'data saved!');
}

现在没有错误,一切正常

【讨论】:

    猜你喜欢
    • 2020-03-01
    • 2016-05-10
    • 2018-08-26
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多