NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 3 - CMS v Nette a Doctrine 2 - Modely a Layout

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Libi
Člen
Avatar
Libi:23.11.2015 16:52

Ahoj,
snazim se podle tutorialu seznamit s doctrine. Mam potiz s ladenkou:

Class or interface 'App\Presenter­s\UserEntity;' used in @var annotation at App\Presenter­s\BasePresenter::$u­serEntity not found. Check annotation and 'use' statements.

Base presenter:

use Nette;
use App\Model\Entities\User as UserEntity;
use App\Model\Facades\UserFacade;

/**
 * Base presenter for all application presenters.
 */
abstract class BasePresenter extends Nette\Application\UI\Presenter
{

    /** @persistent null|string */
    public $locale;

    /**
     * @var \Kdyby\Translation\Translator
     * @inject
     */
    public $translator;

    /**
     *
     * @var UserFacade
     * @inject
     */
    public $userFacade;

    /**
     *
     * @var UserEntity;
     * @inject
     */
    public $userEntity;


    /**
     * Translation macro
     * @inheritdoc
     */
    protected function createTemplate()
    {
        /** @var Template $template */
        $template = parent::createTemplate();
        $this->translator->createTemplateHelpers()
                ->register($template->getLatte());
        return $template;
    }

}

I netbeans mi tvrdi ze use statement s UserEntity neni v kodu pouzita.
Jedu na PHP 5.4.3.

User.php mam

namespace App\Model\Entities;

use Doctrine\ORM\Mapping as ORM;

/**
 * Doctrine entity for user table
 * @package App\Model\Entities
 * @ORM\Entity
 */
class User extends ORM\Mapping\MappedSuperclass
{
..
}

Kdyby\...\base­Entity je deprecated.

Nejak nevidim, v cem mam chybu, dik za nakopnuti (a vyborne napsany tutorial) :)

 
Odpovědět
23.11.2015 16:52
Avatar
Odpovídá na Libi
Martin Konečný (pavelco1998):23.11.2015 17:11

Ahoj,

po asi 5 minutovém koukání na ten kód jsem si všiml, že u anotace @var UserEntity; v BasePresenteru máš středník, který tam být nemá :D
Ono ti to hlásí i v té chybě společně s tím středníkem, ale těžko se toho dá všimnout.
Jinak by to snad mělo fungovat bez problému.

Odpovědět
23.11.2015 17:11
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Libi
Člen
Avatar
Libi:23.11.2015 21:59

Diky, to je presne chvile, kdy je lepsi od toho jit pryc a dat si pauzu, protoze i kdyby ten strednik byl pres pul obrazovky, nevsiml bych si ho :)

 
Odpovědět
23.11.2015 21:59
Avatar
Odpovídá na Libi
Martin Konečný (pavelco1998):23.11.2015 22:37

Taky jsem měl co dělat, abych si ho všiml :D

Odpovědět
23.11.2015 22:37
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Libi
Člen
Avatar
Libi:25.10.2016 21:22

Ahoj,

Všechny naše entity budou dědit od základní entity, vytvořené rozšířením Kdyby. Získá díky tomu některé příjemné funkce, např. nebudeme muset psát settery a gettery a místo toho budeme moci používat přímo $user->name.

Nemely by settery byt zapsany explicitne, minimalne pro osetreni vstupu? Stejne tak automaticke gettery - nekoliduje to s principem zapouzdreni, kdy pres gettery zpristupnim jen to, co ma byt pristupne?

 
Odpovědět
25.10.2016 21:22
Avatar
Odpovídá na Libi
Martin Konečný (pavelco1998):25.10.2016 22:27

ahoj,
díky těmto magickým funkcím se nám v podstatě jen zjednoduší psaní - pokud by sis udělal explicitně sette/getter, pak by např. $user->name = "Jméno" zavolalo $user->setName("Jméno").
Proto settery/gettery není nutné v tomto případě psát, pokud nám stačí vzít/uložit surovou hodnotu. Samozřejmě pokud bychom chtěli dělat nějakou validaci vstupu, pak je potřeba set metodu napsat.

Jedná se tedy jen o zkrácení zápisu, abys neměl hromadu funkcí, které buď jen něco uloží nebo vrátí (klasicky viz příklady u Symfony a Doctrine). Pokud chceš mít jistotu, že nepůjde použít nějaký atribut, který má být doslova privátní (tzn. nemít na něj ani getter), pak zřejmě bude vhodnější od základní Kdyby\BaseEntity nedědit.

Poznámka: v novější verzi Kdyby jsou tyto funkce v traitě Kdyby\Doctrine\En­tities\MagicAc­cessors, BaseEntity je zavrhnuta.

Odpovědět
25.10.2016 22:27
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
rurijs
Člen
Avatar
rurijs:6.11.2016 21:48

Ahoj,
dělal jsem vše podle návodu, no píše mi to:

User Deprecated
Nette\DI\State­ment::setEnti­ty is deprecated, change Statement object itself.

Nevíte co s tím?

 
Odpovědět
6.11.2016 21:48
Avatar
Odpovídá na rurijs
Martin Konečný (pavelco1998):6.11.2016 22:06

Ahoj,
můžeš přiložit screen z Laděnky?

Odpovědět
6.11.2016 22:06
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
rurijs
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
rurijs:6.11.2016 22:22

Už jsem to vyřešil (vzal jsem si composer z tohohle projektu, není tam totiž aktuální nette, atd), takže downgrade verzí.. a hláška zmizela.

 
Odpovědět
6.11.2016 22:22
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Dominik Gavrecký:15.11.2016 19:51

Prečo si constructor nevytvoril v class-e BaseFacades, ktorou by si následne rozšíril každú Facade ?

/**
         * Sloupec pro datum registrace.
         * @ORM\Column(name="`registration_date`", type="datetime")
         */
        protected $registrationDate;

Prečo neurčuješ CURRENT_TIMESTAMP ?

Odpovědět
15.11.2016 19:51
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 19.