我正在使用laravel,但并不重要,当您使用laravel命令行工具创建控制器时,它会将4个默认功能放置在那里以进行创建和更新。对SAVE和UPDATE使用相同的方法是不好的做法吗?
create
和store
为save
edit
和update
井update
!
这是laravel建议的商店控制器。
class ShopController extends Controller
{
public function create()
{
// return create view
}
public function store(Request $request)
{
// save a shop
}
public function edit($id)
{
// find a shop , return edit view
}
public function update(Request $request, $id)
{
// find the shop with id , update the shop
}
}
但我喜欢使用相同的方法来显示视图和存储/更新我的行,并避免写很多额外的代码。
class ShopController extends Controller
{
public function create($id = 0)
{
return view('shop-create' , ['edit'=> Shop::find($id)]);
}
public function store(Request $request , $id = 0)
{
$whitelist = [
'title'=>'required',
'phone'=>'present|numeric' ,
'address'=>'present' ,
];
$this->validate($request, $whitelist);
$shop = Shop::findOrNew($id) ;
// find a shop with given id or create a new shop instance
foreach($whitelist as $k=>$v)
$shop->$k = $request[$k];
$shop->save();
}
}
当然,我去我喜欢的(第二个选项),但由于laravel建议第一种方式,只是出于好奇是否有任何理由为什么我不应该做这样的?这是否被认为是不好的做法?
显示您的查看源代码。 –
最好不要反对框架的惯例,它可能会在未来混淆你和其他人。拥抱Laravel的做事方式,您将获得更容易遵循文档的奖励,并且更容易利用框架功能。 – ShaunUK