我正在使用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