如何向Backpack-Laravel添加一个请求项?
How add a request item to Backpack-Laravel?
我必须传递用户的秘密 author_id 当他编辑例如一篇文章并将其记住到背包中的数据库中时 - Laravel .
怎么做到的?
我可以做到这一点,该值出现在 $request 数组中(我使用 dd($request) 知道这一点)但没有存储在数据库。
AuthorCrudController.php
public function update(UpdateArticleRequest $request)
{
//dd($request); <-- author_id = Auth::id()
return parent::updateCrud();
}
UpdateArticleRequest.php
public function rules()
{
$this->request->add(['author_id'=> Auth::id()]);
return [
'title' => 'required|min:5|max:255',
'author_id' => 'numeric'
];
}
100 次中有 99 次,如果未存储该值,那是因为您的模型 $fillable
属性 中未提及该列。是这个吗?
旁注:像这样添加 author_id 是可行的,但是如果您将这种方法用于多个模型,我建议您对所有模型进行一次编码。我为此使用了一个特征。这样,无论何时创建一个条目,作者都会被保存,并且您可以在一个地方获得它的所有方法,特征 ($this->creator()
, this->updator
).
我的做法是:
1) 我的数据库中有两个新列 created_by
和 updated_by
2) 我使用这样的特征:
<?php namespace App\Models\Traits;
use Illuminate\Database\Eloquent\Model;
trait CreatedByTrait {
/**
* Stores the user id at each create & update.
*/
public function save(array $options = [])
{
if (\Auth::check())
{
if (!isset($this->created_by) || $this->created_by=='') {
$this->created_by = \Auth::user()->id;
}
$this->updated_by = \Auth::user()->id;
}
parent::save();
}
/*
|--------------------------------------------------------------------------
| RELATIONS
|--------------------------------------------------------------------------
*/
public function creator()
{
return $this->belongsTo('App\User', 'created_by');
}
public function updator()
{
return $this->belongsTo('App\User', 'updated_by');
}
}
3) 每当我希望模型具有此功能时,我只需要:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Backpack\CRUD\CrudTrait;
class Car extends Model
{
use CrudTrait;
use CreatedByTrait; // <---- add this line
希望对您有所帮助。
我的背包设置中的更新函数在 updateCrud 函数中传递了 $request。您提到的那个没有将请求传递给父函数。
public function update(UpdateRequest $request)
{
// your additional operations before save here
$redirect_location = parent::updateCrud($request);
return $redirect_location;
}
我必须传递用户的秘密 author_id 当他编辑例如一篇文章并将其记住到背包中的数据库中时 - Laravel . 怎么做到的?
我可以做到这一点,该值出现在 $request 数组中(我使用 dd($request) 知道这一点)但没有存储在数据库。
AuthorCrudController.php
public function update(UpdateArticleRequest $request)
{
//dd($request); <-- author_id = Auth::id()
return parent::updateCrud();
}
UpdateArticleRequest.php
public function rules()
{
$this->request->add(['author_id'=> Auth::id()]);
return [
'title' => 'required|min:5|max:255',
'author_id' => 'numeric'
];
}
100 次中有 99 次,如果未存储该值,那是因为您的模型 $fillable
属性 中未提及该列。是这个吗?
旁注:像这样添加 author_id 是可行的,但是如果您将这种方法用于多个模型,我建议您对所有模型进行一次编码。我为此使用了一个特征。这样,无论何时创建一个条目,作者都会被保存,并且您可以在一个地方获得它的所有方法,特征 ($this->creator()
, this->updator
).
我的做法是:
1) 我的数据库中有两个新列 created_by
和 updated_by
2) 我使用这样的特征:
<?php namespace App\Models\Traits;
use Illuminate\Database\Eloquent\Model;
trait CreatedByTrait {
/**
* Stores the user id at each create & update.
*/
public function save(array $options = [])
{
if (\Auth::check())
{
if (!isset($this->created_by) || $this->created_by=='') {
$this->created_by = \Auth::user()->id;
}
$this->updated_by = \Auth::user()->id;
}
parent::save();
}
/*
|--------------------------------------------------------------------------
| RELATIONS
|--------------------------------------------------------------------------
*/
public function creator()
{
return $this->belongsTo('App\User', 'created_by');
}
public function updator()
{
return $this->belongsTo('App\User', 'updated_by');
}
}
3) 每当我希望模型具有此功能时,我只需要:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Backpack\CRUD\CrudTrait;
class Car extends Model
{
use CrudTrait;
use CreatedByTrait; // <---- add this line
希望对您有所帮助。
我的背包设置中的更新函数在 updateCrud 函数中传递了 $request。您提到的那个没有将请求传递给父函数。
public function update(UpdateRequest $request)
{
// your additional operations before save here
$redirect_location = parent::updateCrud($request);
return $redirect_location;
}