Předání id přihlášeného uživatele do komponenty
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Taps
- Člen | 169
Zdravím, mohl by mi prosím někdo poradit, jak mám id přihlášeného uživatele předat do komponenty, kod uvádím níže. Vypisuje se mi chyba Undefined variable: user
<?php
namespace App\Forms;
use Nette;
use Nette\Application\UI\Form;
use Nette\Security\User;
use App\Model;
use App\Model\CategoryManager;
use App\Model\RecordsManager;
class RecordsFormFactory
{
use Nette\SmartObject;
/** @var FormFactory */
private $factory;
/** @var CategoryManager */
private $categoryManager;
/** @var RecordsManager */
private $recordsManager;
/** @var \Nette\Security\User */
private $user;
public function __construct(FormFactory $factory, CategoryManager $categoryManager, RecordsManager $recordsManager, User $user)
{
$this->factory = $factory;
$this->categoryManager = $categoryManager;
$this->recordsManager = $recordsManager;
$this->user = $user;
}
/**
* @return Form
*/
public function create(callable $onSuccess)
{
$form = $this->factory->create();
$form->addText('pretender', 'Žadatel:')
->setRequired('Zadejte žadatele.');
$category = $this->categoryManager->getCategory();
$form->addSelect('IdCategory', 'Výpis:', $category)
->setPrompt('Zvolte typ výpisu');
$form->addText('price', 'Cena:')
->setRequired('Zadejte cenu výpisu.');
$form->addSubmit('send', 'Uložit');
$form->onSuccess[] = function (Form $form, $values) use ($onSuccess) {
try {
$this->recordsManager->saveRecord($values->number,**$user->id**, $values->IdCategory, $values->pretender, $values->price);
} catch (Nette\Security\AuthenticationException $e) {
$form->addError('Uživatelské jméno nebo heslo není správné.');
return;
}
$onSuccess();
};
return $form;
}
}
- Pavel Kravčík
- Člen | 1196
Třeba takto:
//Presenter
protected function createComponentRecordForm()
{
$control = $this->IRecordFactory->create();
$control->setUserId($this->getUser()->getId());
return $control;
}
Nebo jako parametr do create(), ale pak ho musíš uvést jako první v constructoru komponenty.
- iNviNho
- Člen | 352
Alebo
<?php
// toto ešte vlož do formu
$form->onSuccess[] = [$this, "add"];
// pridaj metódu
public function add(Form $form) {
$values = $form->getValues();
try {
$this->recordsManager->saveRecord($values->number,**$this->user->id**, $values->IdCategory, $values->pretender, $values->price);
} catch (Nette\Security\AuthenticationException $e) {
$form->addError('Uživatelské jméno nebo heslo není správné.');
return;
}
}
?>
Editoval iNviNho (23. 1. 2017 12:02)