jam*_*dri 5 php crud laravel laravel-5
在有人询问之前,我已经研究过CRUD发电机,我知道所有关于Laravel资源路线的信息,但这并不是我在这里提到的.
我要做的是创建一个带有几个参数的Route,以及一个用于简单CRUD操作的模型控制器(使用/ extends?)的全局类.我们有20个左右的模型,Controller为每个表创建一个资源比找到一种创建全局CRUD类来处理所有" api"类型调用和任何ajax json请求(如create/update/destroy语句)的方法更耗时.
所以我的问题是,构建一个类来处理所有CRUD请求的最简洁和最好的方法是什么,Model而不必controller为每个人都拥有资源model?我试过研究这个,似乎找不到任何链接,除了CRUD生成器和链接描述laravel Resource route.
最简单的方法是执行以下操作:
为您的资源控制器添加一条路由:
Route::resource('crud', 'CrudController', array('except' => array('create', 'edit')));
Run Code Online (Sandbox Code Playgroud)创建你的 CRUD 控制器
<?php namespace App\Http\Controllers;
use Illuminate\Routing\Controller;
use App\Models\User;
use App\Models\Product;
use Input;
class CrudController extends Controller
{
const MODEL_KEY = 'model';
protected $modelsMapping = [
'user' => User::class,
'product' => Product::class
];
protected function getModel() {
$modelKey = Input::get(static::MODEL_KEY);
if (array_key_exists($modelKey, $this->modelsMapping)) {
return $this->modelsMapping[$modelKey];
}
throw new \InvalidArgumentException('Invalid model');
}
public function index()
{
$model = $this->getModel();
return $model::all();
}
public function store()
{
$model = $this->getModel();
return $model::create(array_except(Input::all(), static::MODEL_KEY));
}
public function show($id)
{
$model = $this->getModel();
return $model::findOrFail($id);
}
public function update($id)
{
$model = $this->getModel();
$object = $model::findOrFail($id);
return $object->update(array_except(Input::all(), static::MODEL_KEY));
}
public function destroy($id)
{
$model = $this->getModel();
return $model::remove($id);
}
}
Run Code Online (Sandbox Code Playgroud)使用您的新控制器:)您必须传递将包含模型密钥的模型参数 - 它必须是白名单中允许的模型之一。例如,如果您想获得id=5的用户,请执行以下操作
GET /crud/5?model=user
Run Code Online (Sandbox Code Playgroud)请记住,它尽可能简单,您可能需要使代码更复杂才能满足您的需求。
另请记住,此代码尚未经过测试 - 如果您发现任何拼写错误或遇到其他问题,请告诉我。我将非常乐意为您运行它。
| 归档时间: |
|
| 查看次数: |
2003 次 |
| 最近记录: |