我有一个 Laravel 4 安装,我已经添加了Confide和Entrust包。
我正在尝试构建一个管理界面来管理用户、角色和权限。
我为权限创建了一个资源丰富的控制器,添加和销毁功能都可以正常工作,但编辑不能。该记录未更新数据库中的值。
这是我的控制器的代码:
<?php
class PermissionController extends BaseController {
protected $permission;
public function __construct(Permission $permission)
{
$this->permission = $permission;
}
...
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
$permission = $this->permission->find($id);
if (is_null($permission))
{
return Redirect::route('permissions.index');
}
return View::make('permissions.edit', compact('permission'));
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
$input = array_except(Input::all(), '_method');
$validation = Validator::make($input, Permission::$rules);
if ($validation->passes())
{
$permission = $this->permission->find($id);
// create name from display_name
$input['name'] = $this->_machine_str($input['display_name']);
try {
$permission->update($input);
$queries = DB::getQueryLog();
$last_query = end($queries);
print_r($queries);
die();
} catch (Exception $e) {
var_dump($e->getTraceAsString());
die();
}
return Redirect::route('permissions.show', $id);
}
return Redirect::route('permissions.edit', $id)
->withInput()
->withErrors($validation)
->with('message', 'There were validation errors.');
}
...
}
和模型:
<?php
use Zizaco\Entrust\EntrustPermission;
class Permission extends EntrustPermission
{
/**
*Soft delete enabled.
*
* @var boolean
*/
protected $softDelete = true;
protected $guarded = array('id');
/**
* Ardent validation rules
*
* @var array
*/
public static $rules = array(
'display_name' => 'required|between:4,32'
);
}
如果我更改模型以扩展Eloquent,则更新有效,因此我可能与 EntrustPermission 模型有关。
我还检查了数据库调用,它只显示选择而不是任何类型的更新。