/**
* @Route("/", name="index")
* @Route("/s/{query}", name="search")
*/
public function indexAction(Request $request, $query = null, $sid = null, $key = null)
{
if ($sid && $key) {
$captcha = [
'captcha_sid' => $sid,
'captcha_key' => $key
];
}
$form = $this->createFormBuilder()
->add('search', TextType::class)
->getForm();
$form->handleRequest($request);
$VKAPI = $this->get('vk_music');
dump($request);
if (isset($query)) {
//$form->get('search')->setData($query);
if ($sid && $key) {
$tracks = $VKAPI->search($query, $captcha);
} else {
$tracks = $VKAPI->search($query);
}
} else {
if ($sid && $key) {
$tracks = $VKAPI->getPopular($captcha);
} else {
$tracks = $VKAPI->getPopular();
}
}
dump($tracks);
if (isset($tracks['error'])) {
$errorInfo = $tracks['error'];
$params = [
'sid' => $errorInfo['captcha']['sid'],
'img' => $errorInfo['captcha']['img']
];
if (isset($query)) {
$params['query'] = $query;
}
return $this->forward('MusicBundle:Default:captcha', $params);
} else {
return $this->render('MusicBundle:Default:index.html.twig', [
'form' => $form->createView(),
'tracks' => $tracks
]);
}
}
/**
* @Route("/captcha")
*/
public function captchaAction(Request $request, $sid, $img, $query = null)
{
$form = $this->createFormBuilder()
->add('key', TextType::class)
->add('sid', HiddenType::class, ['data' => $sid])
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$params = [
'sid' => $data['sid'],
'key' => $data['key']
];
if (isset($query)) {
$params['query'] = $query;
}
return $this->forward('MusicBundle:Default:index', $params);
} else {
return $this->render('MusicBundle:Default:captcha.html.twig', [
'form' => $form->createView(),
'captcha_img' => $img
]);
}
}
Открываю site/app_dev.php/s/text, выводит капчу. Пишу ее, сабмичу, и страница бесконечно загружается. Я так понимаю что все уходит в цикл. А на самом деле я ничего не понимаю. Если кому-то предоставить нужно куски сервиса - напишите. Но тут вроде все понятно как работает.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости