Problém s registráciou užívateľa
- Takeshi
- Člen | 596
Ahojte,
mám problém s registráciou užívateľa. Snažil som sa všetko robiť
podľa návodu a niektoré veci aj opraviť, ale stále mám problém. Najskôr
som mal túto verziu triedy RegistePresenter.php >>
„Pre istotu napíšem postupnosť pár krokov“ >>
<?php
namespace App\Presenters;
use Nette;
use Nette\Application\UI,
Nette\Application\UI\Form as Form;
class RegisterPresenter extends BasePresenter {
private $users;
protected function startup() {
parent::startup();
$this->users = $this->context->users;
}
public function renderRegister(){
}
protected function createComponentRegisterForm() {
$form = new Form;
$form->addText('username', 'Jméno');
$form->addPassword('password', 'Heslo: *', 20)
->setOption('description', 'Alespoň 6 znaků')
->addRule(Form::FILLED, 'Vyplňte Vaše heslo')
->addRule(Form::MIN_LENGTH, 'Heslo musí mít alespoň %d znaků.', 6);
$form->addPassword('password2', 'Heslo znovu: *', 20)
->addConditionOn($form['password'], Form::VALID)
->addRule(Form::FILLED, 'Heslo znovu')
->addRule(Form::EQUAL, 'Hesla se neshodují.', $form['password']);
$form->addSubmit('send', 'Registrovat');
$form->onSuccess[] = callback($this, 'registerFormSubmitted');
return $form;
}
public function registerFormSubmitted(Form $form) {
$values = $form->getValues();
$new_user_id = $this->users->register($values);
if($new_user_id){
$this->flashMessage('Registrace se zdařila, jo!');
$this->redirect('Sign:in');
}
}
}
?>
<?php
ERROR : Nette\DI\Container::__get() is deprecated; use getService() or enable di.accessors in configuration.
na riadoku ==>> 15: $this->users = $this->context->users;
?>
<?php
Tak som to znemil na ==>> 15: $this->users = $this->dtb->table("users");
?>
Ukázalo mi ďalšiu chybu :
<?php
ERROR: Call to undefined function App\Presenters\callback()
na riadoku ==>> 33: $form->onSuccess[] = callback($this, 'registerFormSubmitted');
?>
<?php
Tak som to znemil na ==>> 33: $form->onSuccess[] = array($this, 'registerFormSubmitted');
?>
Teraz to ide … až na jednu vec :: >> Po vyplnení a odoslaní formulára mi napíše chybu :
<?php
ERROR: Call to undefined method Nette\Database\Table\Selection::register()
?>
… a pritom som od triedy Users.php pridal funkciu register … tak teraz neviem čo ďalej
- Oli
- Člen | 1215
chyba je tady:
$this->users = $this->dtb->table("users");
. Ty nastavuješ
$this->users jako tabulku „users“ a vrací ti to selection.
Poud nechceš používat model, tak to musíš napsat celý
$this->users = $this->dtb->table("users")->insert($data);
a nebo si napsat nějakou třídu UserPresenter
, které
v konstruktoru předáš context
a vytvoříš si metodu
register
.
- Takeshi
- Člen | 596
Oli napsal(a):
chyba je tady:
$this->users = $this->dtb->table("users");
. Ty nastavuješ $this->users jako tabulku „users“ a vrací ti to selection.Poud nechceš používat model, tak to musíš napsat celý
$this->users = $this->dtb->table("users")->insert($data);
a nebo si napsat nějakou tříduUserPresenter
, které v konstruktoru předášcontext
a vytvoříš si metoduregister
.
Ďakuje, ale nie, že by som nechcel používať model … ja neviem ako ho použiť. Chcem aby to vkladalo tak ako má byť, teda cez hash funkciu atď. … poraďte pls … ďakujem …
Editoval Takeshi (22. 11. 2015 12:24)