Професионална програма
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