![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 25.11.2014 Ostrzeżenie: (10%) ![]() ![]() |
Robię ćwiczenia z książką (opartą o symf 2.0.10, używając u siebie `Symfony 2.6.1` i FOSUM 2.0).
Zrobiłem projekt z CRUD wyświetlający dane z bazy (Mountain controller w My/BackendBundle) Teraz chcę wyświetlić projekt tylko dla zalogowanego użytkownika `admin` (with ROLE_SUPER_ADMIN, który istnieje w tabeli `for_user`w tej samej bazie co dane z CRUD). Ale gdy otwieram ../web/ skutkuje to wyjątkiem `Unable to find Mountain entity` z `Mountain controller showAction($id)`
Kod #\app\config\security.yml security: providers: fos_userbundle: id: fos_user.user_manager encoders: FOS\UserBundle\Model\UserInterface: sha512 firewalls: main: pattern: ^/ logout: true anonymous: true form_login: provider: fos_userbundle csrf_provider: form.csrf_provider login_path: /login use_forward: false check_path: /login_check post_only: true always_use_default_target_path: false default_target_path: / target_path_parameter: _target_path use_referer: false failure_path: null failure_forward: false username_parameter: _username password_parameter: _password csrf_parameter: _csrf_token intention: authenticate access_control: - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/, role: ROLE_SUPER_ADMIN } Kod #\app\config\config.yml imports: - { resource: parameters.yml } - { resource: security.yml } - { resource: services.yml } framework: #esi: ~ translator: ~ secret: "%secret%" router: resource: "%kernel.root_dir%/config/routing.yml" strict_requirements: ~ form: ~ csrf_protection: ~ validation: { enable_annotations: true } templating: engines: ['twig'] #assets_version: SomeVersionScheme default_locale: "%locale%" trusted_hosts: ~ trusted_proxies: ~ session: # default_locale: pl # handler_id set to null will use default session handler from php.ini handler_id: ~ fragments: ~ http_method_override: true # Twig Configuration twig: debug: "%kernel.debug%" strict_variables: "%kernel.debug%" # Assetic Configuration assetic: debug: "%kernel.debug%" use_controller: false bundles: [ ] #java: /usr/bin/java filters: cssrewrite: ~ #closure: # jar: "%kernel.root_dir%/Resources/java/compiler.jar" #yui_css: # jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar" # Doctrine Configuration doctrine: dbal: driver: "%database_driver%" host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 # if using pdo_sqlite as your database driver: # 1. add the path in parameters.yml # e.g. database_path: "%kernel.root_dir%/data/data.db3" # 2. Uncomment database_path in parameters.yml.dist # 3. Uncomment next line: # path: "%database_path%" orm: auto_generate_proxy_classes: "%kernel.debug%" auto_mapping: true # Swiftmailer Configuration swiftmailer: transport: "%mailer_transport%" host: "%mailer_host%" username: "%mailer_user%" password: "%mailer_password%" spool: { type: memory } stof_doctrine_extensions: default_locale: en_US orm: default: tree: false loggable: false timestampable: false sluggable: false translatable: false fos_user: db_driver: orm firewall_name: main user_class: My\UserBundle\Entity\User #\app\config\routing.yml MyBackendBundle: resource: "@MyBackendBundle/Controller/" type: annotation prefix: / fos_user_security: resource: "@FOSUserBundle/Resources/config/routing/security.xml" Kod #\parameters.yml # This file is auto-generated during the composer install parameters: database_driver: pdo_mysql database_host: 127.0.0.1 database_port: null database_name: koronaziemi database_user: root database_password: null mailer_transport: smtp mailer_host: 127.0.0.1 mailer_user: null mailer_password: null locale: pl secret: ThisTokenIsNotSoSecretChangeIt Krótko mówiąc. Póki nie dodam linii Kod - { path: ^/, role: ROLE_SUPER_ADMIN } w security.yml aplikacja wyświetla zawartość. Po dodaniu linii zaczyna jej brakować encji,z której wcześniej korzystała.
Ten post edytował twojastara 22.01.2015, 17:14:03 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
A encja znajduje się w katalogu Entity w MyBackendBundle ?
Dodatkowo pokaż mapowanie -------------------- Cytat There is a Bundle for that Lukas Kahwe Smith - October 31th, 2014 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 25.11.2014 Ostrzeżenie: (10%) ![]() ![]() |
![]()
Ten post edytował twojastara 23.01.2015, 00:47:02 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dostajesz Exception że encja nie istnieje, bo fizyczny rekord dla danego $id nie istnieje w bazie.
-------------------- Cytat There is a Bundle for that Lukas Kahwe Smith - October 31th, 2014 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 25.11.2014 Ostrzeżenie: (10%) ![]() ![]() |
nie rozumiem dlaczego tu się w ogóle odzywa wyjątek z showAction, bez FOSUB adres ../web/ pokazuje indexAction. I jaki on niby parametr bierze za $id, że go nie może znaleźć w tabeli.
----------- edit: znalazłem rozwiązanie. var_dump($id); ustawiony w showAction przed linią $entity = $em->getRepository('MyBackendBundle:Mountain')->find($id); drukuje Kod string [b]'login'[/b] (length=5) gdy otwieram localhost/project/web/ i automatycznie przekierowuje na localhost/project/web/login czyli pobiera z URLa login jako parametr find($id) szuka takiego klucza w bazie danych. Gdy dodam parametr requirements={"id": "\d+"} do route przed showAction * @Route("/{id}", name="mountain_show", requirements={"id": "\d+"})) to jako parametr nie bierze pod uwagę stringów. I wyświetla formularz do logowania i po zalogowaniu wyświetla wszystko jak należy. Ale nie chce mi sie wierzyć, że trzeba uciekać się do takich trików za każdym razem gdy używa się logowania na stronie, która pobiera parametr z URL. Coś pewnie w plikach konfiguracyjnych musi być. Ma ktoś jakiś pomysł? ------------------------------------------------ Okazało się, że autor podręcznika pominął krok, w którym po prostu dla tej akcji, która została w całości wygenerowana razem z kontrolerem komendą doctrine:generate:crud zmodyfikował oryginalne @Route("/{id}" na @Route("/{id}/show" nie wspominając o tym. wywalcie ten temat bo nie mogę patrzeć na swoje 3 dniowe męki. Ten post edytował twojastara 23.01.2015, 23:43:27 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 16:47 |