Callback na metodu – postFormSucceeded

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
doudik
Člen | 12
+
0
-

Zdravím,

obracím se na pomoc ohledně callback funkce. Chci po úspěšném provedení Callbacknout na postFormSucceeded, ale nějak mi nebere.

Verze nette 2.3.2

img: http://imageshack.com/…9/BFBRsV.png

děkuji.

Jan Tvrdík
Nette guru | 2595
+
+1
-

Jak máš Nette nainstalované? Nahraď použití callback za obyčejné array a bude to fungovat.

doudik
Člen | 12
+
0
-

Paráda! Jeden problém vyřešen :)

Nemilé zjištění bylo, že následoval další problém..

img: http://imageshack.com/…3/QwUk6k.png

Zase habruje register.. Zkoušel sem hledat na netu, ale nikde nebyl řešen daný problém.

@JanTvrdík Implementuju ho ručně při vytváření projektu.

David Matějka
Moderator | 6445
+
0
-

@doudik ukaz, jak deklarujes property users v tom presenteru a jak do toho injectujes tu zavislost

doudik
Člen | 12
+
0
-

@DavidMatějka

img:
http://imageshack.com/…9/1KhiYn.png
http://imageshack.com/…8/QBnsr7.png

Editoval doudik (1. 6. 2015 23:19)

Filip Procházka
Moderator | 4668
+
0
-

Users vypadá jako nějaký model, ale nikde nemáš konstruktor.

class Users
{
    private $db;

    public function __construct(\DibiConnection $db)
	{
		$this->db = $db;
	}

Ty proměnné presenteru, pokud chceš aby ti do nich Nette injectlo samo, nesmí být private.

class RegisterPresenter ...
{
	/** @var Users @inject */
	public $users;

A příště prosím kopíruj kód sem do fóra a použij formátovací funkce na zvýraznění, opisování kódu z obrázku je opruz.

Azathoth
Člen | 495
+
0
-

mohl bych podotknout, jen tak mimochodem, že používat statickou sůl a sha1 je trochu hloupé, když nette samotné poskytuje velmi příjemné a silné hashování?

Editoval Azathoth (1. 6. 2015 23:34)

doudik
Člen | 12
+
0
-

@FilipProcházka Omlouvám se, ale teďka sem tě nějak zcela nepochopil. Users mám dělanou jako model, do které sem chtěl přistupovat z presenteru. Tudíž sem se nějak ztratil. Třída $users byla nastavena na public.

E: Po přidání /** @var Users @inject*/ laděnka: Service of type App\Presenters\Users used in @var annotation at App\Presenters\RegisterPresenter::$users not found. Did you register it in configuration file? na $container = $configurator->createContainer();

Editoval doudik (1. 6. 2015 23:36)

Azathoth
Člen | 495
+
0
-

potřebuješ dostat connection do modelu a model do presenteru. Přesně k tomu slouží dependency injection, tedy vstřikování závislostí. Connection a třída Users jsou závislosti, které chceš vstříknout někam, kde jsou zapotřebí. Tady je na dependency injection(DI) hezké video a tady je další hezké video, přímo od tvůrce

Azathoth
Člen | 495
+
0
-

@doudik a registroval jsi? máš v config.neon podle dokumentace tohle?

services:
	- App\Presenters\Users

Editoval Azathoth (1. 6. 2015 23:43)

doudik
Člen | 12
+
0
-

@Azathoth Neměl sem. Přidal sem a teďka bojuju s přesností tab/mezer. Píšu to ve fazolích, zkouším nastavit správné odstavení v notepadu++

@Azathoth e: Nastaveno.

public function __construct(\DibiConnection $db)
{
$this->db = $db;
 }

Používám $database.

Stále jsem u chyby

Call to a member function register() on a non-object

Při kódu – habruje 48 řádka.

>

38: ->addRule(Form::FILLED, ‚Heslo znovu‘)
39: ->addRule(Form::EQUAL, ‚Hesla se neshodují.‘, $form[‚password‘]);
40: $form->addSubmit(‚send‘, ‚Registrovat‘);
41: $form->onSuccess[] = array($this, ‚registerFormSubmitted‘);
42: return $form;
43: }
44:
45: public function registerFormSubmitted(UI\Form $form) {
46: $values = $form->getValues();
47: // $new_user_id = $form->getValues($asArray = FALSE);
48: $new_user_id = $this->users->register($values);
49: if($new_user_id){
50: $this->flashMessage(‚Registrace proběhla úspěšně!‘);
51: $this->redirect(‚Sign:in‘);
52: }

Editoval doudik (2. 6. 2015 0:03)

Azathoth
Člen | 495
+
0
-

ve fazolích už dlouho nedělám, ale asi to bude někde v konfiguraci…já jsem prasácky, když jsem se v tom nechtěl hrabat, smazal všechna odsazení a pak jsem to odtabulátoroval ve fazolích, tím jsem to měl v rámci souboru jednotné.

doudik
Člen | 12
+
0
-

@Azathoth . Jenom pro reaktivaci příspěvku

doudik
Člen | 12
+
0
-

Dořešeno. Lock :-)

Všem zůčastněným děkuji.