我有一个名为events的控制器(类)。有些方法,如get,应该对所有用户(公共)都可访问。但是,某些方法(如add和edit)应该只有经过身份验证的用户才能访问。
代替:
public function add(){
//if user is logged in add event
}
public function edit(){
//if user is logged in edit event
}
有没有更优雅的方法来实现这个?也许是这样的"如果用户登录"条件是自动检查每次我调用一个方法?(不需要每次都明确说明)。
我认为它可能有一个父类的事件,有未经身份验证的方法,然后扩展它,包括身份验证的方法,但我不确定如果/如何工作。
作为参考,我有以下事件控制器:
class Events extends MY_Controller{
public function get(){
echo "List of events";
}
public function add(){
echo "Adding an event";
}
public function edit(){
echo "Editing an event";
}
}
你可以这样做
class Events extends MY_Controller{
public function get(){
echo "List of events";
}
public function addedit($edit_id=0){
// check login user first
if(!$this->session->get('userid')){ redirect('login')}
if($this->input->post('submit'))
{
if($edit_id==0)
{
// insert record
}
else
{
// Edit record using edit_id
}
}
if($edit_id>0)
{
// get array record using edit_id to display in form
$data['record']=$this->MODEL->getRecordById($edit_id)
}
$this->load->view('addeditform',$data)
}
}