Loading...
daniel.nikov926 avatar daniel.nikov926 18 Точки

Проблем с route

Здравейте,

написах в UserController кога, който е за изтриване и редактиране на потребители, но и на двете ми дават грешка route. Кода който написах е:

/**
 * @Route("/delete/{id}", name="admin_user_delete")
 *
 * @param $id
 * @param Request $request
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function deleteUser($id, Request $request)
{
    $user = $this->getDoctrine()->getRepository(User::class)->find($id);

    if($user === null)
    {
        return $this->redirectToRoute("admin_users");
    }

    $form = $this->createForm(UserEditType::class, $user);

    return $this->render('admin/user/delete.html.twig', ['user'=> $user,
    'form' => $form->createView()]);
}

Грешката която ми изписва браузъра е: Unable to generate a URL for the named route "admin_user_delete" as such route does not exist.

0
PHP Web Development
netbull avatar netbull -4 Точки

1-во метода ти трябва да завършва на Action т.е. deleteUserAction.

2-ро погледни пак дали си включил в app/config/route.yml този контролер или бъндъл да използва анотации за руутовете както е описано тук

П.С. предполагам колегата е имал предвид кеша на симфони, а не на браузъра. На симфони се трие с командата php bin/console cache:clear (--env=prod) /по подразбиране трие за девелопърската версия/

0
16/01/2017 09:35:26
daniel.nikov926 avatar daniel.nikov926 18 Точки

по-нагоре във файла съм използвал

/**
     * @Route("/", name="admin_users")
     *
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function listUsers()
    {
        $users = $this->getDoctrine()->getRepository(User::class)->findAll();

        return $this->render('admin/user/list.html.twig', ['users'=> $users]);
    }

и си работи и също така го сложих и в route.yml, но нищо не се оправи

0
netbull avatar netbull -4 Точки

пробвай без бакслаш в урл-а www.your-host.com/delete/12, ако нестане постни app/config/route.yml да видим там и между другото имат дебуг бар ползвай го...

Това с Action в метода при конфигурация с yml вместо анотации е задължително, а както в твоя случай е по конвенция

0
16/01/2017 09:50:29
daniel.nikov926 avatar daniel.nikov926 18 Точки

можеш ли да ми дадеш пример за route.yml ?

0
netbull avatar netbull -4 Точки

Принципно не ми харесва руутовете да са с анотации понеже така конфирурирането е пръснато и е неприятно /поне на мен/, аз предпочитам yml понеже е по-подредено и такива проблеми до сега не съм срещал.

все пак с анотациите имаш 2 варианта:

- казваш на системата определен контролер, който ползва анотации за руутовете като:

post:
    resource: "@SensioBlogBundle/Controller/PostController.php"
    type:     annotation

- казваш на системата цялата папка с контролерите от определен бъндъл:

blog:
    resource: "@SensioBlogBundle/Controller"
    type:     annotation

Но при теб щом работи с определеният метод от този контролер значи не е нито едно от горните две...

Командата 

php bin/console debug:router

какво ти показва ?

0
b.yordanov avatar b.yordanov 146 Точки

Колега, размени местата на $id и Request $request както е по-долу и кажи дали ще се оправи

public function deleteUser(Request $request, $id) {}
0
16/01/2017 11:55:19
netbull avatar netbull -4 Точки

Забравих да допълня да обърнеш внимание и на http метода /дали е GET, POST, DELETE и т.н./

0
b.yordanov avatar b.yordanov 146 Точки

Ако няма дефиниран @Method не би трябвало да е от значение, просто ще си влезе в блока.

0
daniel.nikov926 avatar daniel.nikov926 18 Точки

не проработи, някакви други идеи ?

0
daniel.nikov926 avatar daniel.nikov926 18 Точки

 _wdt                       ANY      ANY      ANY    /_wdt/{token}                       
  _profiler_home             ANY      ANY      ANY    /_profiler/                         
  _profiler_search           ANY      ANY      ANY    /_profiler/search                   
  _profiler_search_bar       ANY      ANY      ANY    /_profiler/search_bar               
  _profiler_info             ANY      ANY      ANY    /_profiler/info/{about}             
  _profiler_phpinfo          ANY      ANY      ANY    /_profiler/phpinfo                  
  _profiler_search_results   ANY      ANY      ANY    /_profiler/{token}/search/results   
  _profiler                  ANY      ANY      ANY    /_profiler/{token}                  
  _profiler_router           ANY      ANY      ANY    /_profiler/{token}/router           
  _profiler_exception        ANY      ANY      ANY    /_profiler/{token}/exception        
  _profiler_exception_css    ANY      ANY      ANY    /_profiler/{token}/exception.css    
  _twig_error_test           ANY      ANY      ANY    /{_locale}/_error/{code}.{_format}  
  blog_index                 GET      ANY      ANY    /                                   
  security_login             ANY      ANY      ANY    /login                              
  security_logout            ANY      ANY      ANY    /logout                             
  user_register              ANY      ANY      ANY    /register                           
  user_profile               ANY      ANY      ANY    /profile                            
  admin_users                ANY      ANY      ANY    /admin/users/                       
  admin_user_edit            ANY      ANY      ANY    /admin/users/edit/{id}              
  admin_user_delete          ANY      ANY      ANY    /admin/users/delete/{id}   

 

това ми показва като написах

php bin/console debug:router
0
16/01/2017 17:52:47
b.yordanov avatar b.yordanov 146 Точки
Това пробва ли го?
public function deleteUser(Request $request, $id) {}
0
netbull avatar netbull -4 Точки

е не... би трябвало да работи... щом го вижда системата би трябвало да е ок... имаш ли кода в гитхъб примерно да се трейсне.. или поне dev.log-а 

0
daniel.nikov926 avatar daniel.nikov926 18 Точки

не знам как да си го кача в github, беше някаква команда

0
netbull avatar netbull -4 Точки

пробвай php bin/console cache:clear и php bin/console cache:clear --env=prod

0
daniel.nikov926 avatar daniel.nikov926 18 Точки

[InvalidArgumentException]                                                                  
The file "/home/infig7gc/public_html/test/app/config/internal/routing.yml" does not exist.  
                                                                                            

0
netbull avatar netbull -4 Точки

яко... проблема е почти ясен.. пробвай да изтриеш папките dev и prod  ръчно от /home/infig7gc/public_html/test/var.

защо route.yml е в internal ?

0
daniel.nikov926 avatar daniel.nikov926 18 Точки

сега пък ми казва, че не може да намери този файл /home/infig7gc/public_html/test/app/config/internal/routing.yml , а моят е в /home/infig7gc/public_html/test/app/config/routing.yml и как да оправя къде да гледа ?

0
netbull avatar netbull -4 Точки

принципно главният routing.yml файл трябва да е в app/config, виж в routing_dev.yml и routing_prod.yml да не би да инглуудваш нещо, което го няма

0
daniel.nikov926 avatar daniel.nikov926 18 Точки

в route_dev.yml си е

# this loads the main routing file, which usually defines the routes available
# in any environment (production, development, etc.)
_main:
    resource: routing.yml

, а routing_prod.yml  го нямам изобщо

0
netbull avatar netbull -4 Точки

а съдържанието на app/config/routing.yml какво е ?

0
daniel.nikov926 avatar daniel.nikov926 18 Точки
php:
    resource: "@MyKnowledgeBlogBundle/Controller/"
    type:     annotation
    prefix:   /

amdin:
    resource: "@MyKnowledgeBlogBundle/Controller/Admin/"
    type:     annotation
    prefix:   /

# These first lines load the all routes defined as @Route() annotations in any
# controller defined inside the src/AppBundle/Controller/ directory. Controllers
# are loaded recursively, so you can separate them into subdirectories.
# If you don't like to add annotations in your applications, you can also define
# the routes in YAML, XML or PHP files.
# See http://symfony.com/doc/current/book/routing.html

# These lines define a route using YAML configuration. The controller used by
# the route (FrameworkBundle:Template:template) is a convenient shortcut when
# the template can be rendered without executing any logic in your own controller.
# See http://symfony.com/doc/current/cookbook/templating/render_without_controller.html
0
netbull avatar netbull -4 Точки

така няма да стане...ако искаш може с teamviewer да погледна иначе може да продължим така и до утре..

0
daniel.nikov926 avatar daniel.nikov926 18 Точки

намери ме във фб https://www.facebook.com/profile.php?id=100003713273274

0
b.yordanov avatar b.yordanov 146 Точки

Успяхте ли да го оправите? Ако не сте може ли и аз да погледна довечера, че ми стана интересно?

0
netbull avatar netbull -4 Точки

Да, всичко е 6

0
b.yordanov avatar b.yordanov 146 Точки

а какъв беше проблема в крайна сметка, доста се изписа за този прословут руут...

0
netbull avatar netbull -4 Точки

Общо взето 2 мин работа ако не и по-малко.. използваше се продъкшън версията, вместо девелоперската версия на симфонията от което идва и известен батак от към кеша на системата..

Като включим грешната концепция за започване на проекта и съвсем мазало, но карай ще го оправи пича.

П.С. Пичове, ползвайте девелоперската версия /това е app_dev.php/ докато работите!

0
daniel.nikov926 avatar daniel.nikov926 18 Точки

Хора всичко което съм направил е това което пише в документацията на RoYaL за PHP Fundamentals, който беше в края на мин. година ....

 

0
netbull avatar netbull -4 Точки

Казах ти, няма страшно. Ако има нещо питай и ще ти се отговори а после ще събираме мненията може и за лекция да стигнат :)

0
b.yordanov avatar b.yordanov 146 Точки

ясно, предполагам tech module

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.