Class 关于 laravel 5.8 的请求-> 输入的名称问题
Class name problem on laravel 5.8 with Request->input
我正在尝试按照教程使用 Laravel 创建一个简单的网络抓取工具 here,但是 symfony 在第 49 行抛出了一个 "Class name must be a valid object or string" 错误。在 phpstorm 它确实给了我一个关于在 $website->title
上使用魔术方法访问的字段的轻微警告
我试图在我的 App/Website.php 中将 $title 声明为 public 变量,但它仍然给我这个错误。
这是有错误的代码片段
public function store(Request $request)
{
$this->validate($request,[
'title'=>'required',
'url'=>'required',
'logo'=>'required'
]);
$website = new Website();
$website->title = new $request->input('title');
$website->url = $request->input('url');
$website->logo = $this->uploadFile('logo', public_path('uploads/'), $request)["filename"];
$website->save();
return redirect()->route('websites.index');
}
/**
* Display the specified resource.
*
这是我的 App/Website Class:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Website extends Model
{
protected $table = "website";
public $title;
/**
* @var array|string|null
*/
public $url;
public $logo;
}
它应该将标题、url 和徽标保存到我命名为 scraper 的 sql 数据库,但它一直抛出此错误。请帮忙。
编辑 2:抱歉,我似乎复制了 symfony 显示的代码,我实际的 WebsiteController 是这样的 再次复制了错误的代码,这是实际的实际代码:
public function store(Request $request)
{
$this->validate($request,[
'title'=>'required',
'url'=>'required',
'logo'=>'required'
]);
$website = new Website();
$website->title = new $request->input('title');
$website->url = $request->input('url');
$website->logo = $this->uploadFile('logo', public_path('uploads/'), $request)["filename"];
$website->save();
return redirect()->route('websites.index');
}
这里 new
不应该在那里,$website->title = new $request->input('title');
,你没有从任何 class 制作对象。我猜你想念类型。
而且你仍然可以通过 $request->title;
获取你的数据我更喜欢这个因为它缩短了你的代码并且仍然可读。
像下面那样做
$website->title = $request->input('title');
或
$website->title = $request->title;
以及将数据保存到数据库中,您不需要声明变量。
只需在模型中添加保护$fillable=['title','url','logo'];
或者如果您使用 save()
方法,您甚至不需要添加 $fillable
我正在尝试按照教程使用 Laravel 创建一个简单的网络抓取工具 here,但是 symfony 在第 49 行抛出了一个 "Class name must be a valid object or string" 错误。在 phpstorm 它确实给了我一个关于在 $website->title
上使用魔术方法访问的字段的轻微警告我试图在我的 App/Website.php 中将 $title 声明为 public 变量,但它仍然给我这个错误。
这是有错误的代码片段
public function store(Request $request)
{
$this->validate($request,[
'title'=>'required',
'url'=>'required',
'logo'=>'required'
]);
$website = new Website();
$website->title = new $request->input('title');
$website->url = $request->input('url');
$website->logo = $this->uploadFile('logo', public_path('uploads/'), $request)["filename"];
$website->save();
return redirect()->route('websites.index');
}
/**
* Display the specified resource.
*
这是我的 App/Website Class:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Website extends Model
{
protected $table = "website";
public $title;
/**
* @var array|string|null
*/
public $url;
public $logo;
}
它应该将标题、url 和徽标保存到我命名为 scraper 的 sql 数据库,但它一直抛出此错误。请帮忙。
编辑 2:抱歉,我似乎复制了 symfony 显示的代码,我实际的 WebsiteController 是这样的 再次复制了错误的代码,这是实际的实际代码:
public function store(Request $request)
{
$this->validate($request,[
'title'=>'required',
'url'=>'required',
'logo'=>'required'
]);
$website = new Website();
$website->title = new $request->input('title');
$website->url = $request->input('url');
$website->logo = $this->uploadFile('logo', public_path('uploads/'), $request)["filename"];
$website->save();
return redirect()->route('websites.index');
}
这里 new
不应该在那里,$website->title = new $request->input('title');
,你没有从任何 class 制作对象。我猜你想念类型。
而且你仍然可以通过 $request->title;
获取你的数据我更喜欢这个因为它缩短了你的代码并且仍然可读。
像下面那样做
$website->title = $request->input('title');
或
$website->title = $request->title;
以及将数据保存到数据库中,您不需要声明变量。
只需在模型中添加保护$fillable=['title','url','logo'];
或者如果您使用 save()
方法,您甚至不需要添加 $fillable