سلام
چند سوال از جلسه هشتم داشتم
اولیش اینه که مثلا توی Project این تابع رو داریم که id کاربر رو بهش می دیم:
public function isUserInProject($userId)
{
$sql = 'SELECT user_id FROM tbl_project_user_assignment WHERE user_id=:userId AND project_id=:projectId';
$command = Yii::app()->db->createCommand($sql);
$command->bindValue(':userId', $userId, PDO::PARAM_INT);
$command->bindValue(':projectId', $this->id, PDO::PARAM_INT);
return $command->execute() == 1;
}
حالا توی ProjectUserFrom که صداش می زنیم یه AR براش می فرستیم(توی شرط if) در حالی که باید id کاربر رو براش می فرستادیم، می خواستم ببینم این چظوری کار می کنه؟
public function verify($attribute, $params)
{
if(!$this->hasError())
{
$user = User::model()->findByAttributes(array('username'=>$this->username));
if($this->project->isUserInProject($user))
{
$this->addError('username', 'This user is alread in the project');
}
else
{
$this->_user = $user;
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------
دومی اینکه توی ProjectUserForm اونجایی که داریم یه مدل از user$ می سازیم ، مقدار this->username$ از کجا میاد؟ خوب ما username$ رو به عنوان یه صفت توی این کلاس تغریف کردیم و هیچ جا بهش مقدار ندادیم!
public function verify($attribute, $params)
{
if(!$this->hasError())
{
$user = User::model()->findByAttributes(array('username'=>$this->username));
if($this->project->isUserInProject($user))
{
$this->addError('username', 'This user is alread in the project');
}
else
{
$this->_user = $user;
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------
این یکی رو دیگه اگه کامل توضیح بدین ممنون می شم که اصلا هیچی نمی فهمم ازش:
public function assign()
{
if($this->_user instanceof User)
{
$this->project->assignUser($this->_user->id, $this->role);
$auth = Yii::app()->authManager;
if(!$auth->isAssigned($this->role, $this->_user->id))
{
$bizRole = 'return isset($params["project"]) && $params["project"]->allowCurrentUser("'.$this->role.'");';
$auth->assign($this->role, $this->_user->id, $bizRole);
}
return true;
}
else
{
$this->addError('username', 'Error when attempting to assign this user to the project');
return false;
}
}
ممنون