Теперь хочу сделать админку для добавления новых пользователей и создания/чтения ролей из базы. Можно ли для таблиц DbManager'a создавать модели при помощи gii и вообще нужны ли эти модели ?
К сожалению видео не могу смотреть
Какие проблемы со слухом? Я грубил?
К сожалению видео не могу смотреть, иначе бы по сайтам не ходил.
Если вы разобрались и вам понятно, то это не значит, что надо новичкам это советовать!
Где объяснение того, как прикрутить свою таблицу с пользователями в RBAC и т.д....?
Документация это мусор для новичков
Нормальные люди уже с этим согласились давно!
public function actionSignup()
{
if(!Yii::$app->user->isGuest)
{
return $this->goHome();
}
$model = new SignupForm();
if($model->load(\Yii::$app->request->post()) && $model->validate())
{
$user = new User();
$user->login = $model->login;
$user->username = $model->username;
$user->surname= $model->surname;
$user->email = $model->email;
$user->password = \Yii::$app->security->generatePasswordHash($model->password);
$user->save(false);
// нужно добавить следующие три строки:
$auth = Yii::$app->authManager;
$authorRole = $auth->getRole('user');
$auth->assign($authorRole, $user->getId());
return $user;
}
return $this->render('signup', compact('model'));
}
например, лимитный интернет, и не имение возможности подключить нормальный
и выходит ошибка добавления
$user->getId()
выдает null, потому как еще не присвоен id, вы же создали пользователя, но не сохранили. $user->password = \Yii::$app->security->generatePasswordHash($model->password);
$user->save()
.Т.е. людям живущим за городом нельзя заниматься программированием без интернета?:))))Смешно
Но ошибка остается
return $user;
это же экшен, должен или переадресовывать или выводить view, но точно не объект. Если хотите вывести на экран то что в $user, тогда надо привести к строке, что и говорит ошибка, например так:return print_r($user);
public function actionSignup()
{
if(!Yii::$app->user->isGuest)
{
return $this->goHome();
}
$model = new SignupForm();
if($model->load(\Yii::$app->request->post()) && $model->validate())
{
$user = new User();
$user->login = $model->login;
$user->username = $model->username;
$user->surname= $model->surname;
$user->email = $model->email;
$user->password = \Yii::$app->security->generatePasswordHash($model->password);
if($user->save())
{
return $this->goHome();
}
// нужно добавить следующие три строки:
$auth = Yii::$app->authManager;
$authorRole = $auth->getRole('user');
$auth->assign($authorRole, $user->getId());
}
return $this->render('signup', compact('model'));
}
if($user->save())
{
return $this->goHome();
}
public function actionSignup()
перенесли в модель? Зачем? Это же экшен, он должен быть в контролере. В модель должно было попасть только $auth = Yii::$app->authManager;
$authorRole = $auth->getRole('user');
$auth->assign($authorRole, $this->id);
Я хорошо знаю и php и oop
Я не виноват, что никто не хочет объяснять нормально, даже платно
Нету ничего достойного, где можно было научиться.
Тут не моя вина.
Объясняли бы нормально
Yii2 это отдельный язык
Все то, что вы дали, ну кроме ютуба, это ничто
И, ученик это зеркало учителя, как ребенок зеркало родителя.
Вам бы дать сейчас все вот это, когда вы только начинали изучать, вы бы ничего не поняли.
Нельзя таким бессердечным быть
Ученик не должен догадываться и париться! Он должен учиться в комфортных условиях, это путь к успеху!
как они этот фреемворк делали.
public function signup()
{
if (!$this->validate()) {
return null;
}
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->generateAuthKey();
if($user->save()){
$role = Yii::$app->authManager->getRole('user');
Yii::$app->authManager->assign($role, $user->id);
}else{
return null;
}
}
public function signup()
{
if (!$this->validate()) {
return null;
}
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->generateAuthKey();
if($user->save()){
$role = Yii::$app->authManager->getRole('user');
Yii::$app->authManager->assign($role, $user->id_user);
}else{
return null;
}
}
public function actionSignup()
{
$model = new SignupForm();
if ($model->load(Yii::$app->request->post())) {
if ($user = $model->signup()) {
if (Yii::$app->getUser()->login($user)) {
return $this->goHome();
}
}
}
return $this->render('signup', [
'model' => $model,
]);
}
Брал у кого то код с сайта
В модели не работает редирект
return $this->goHome();
не работает