Как вывести маасив из модели

InstantCMS 2.X
#1 11 июня 2017 в 18:28
Друзья всем привет, пытаюсь сделать редирект не получается

  1. class actionSportPlayerEdit extends cmsAction {
  2. public function run($id=false){
  3. if (!$id) { cmsCore::error404(); }
  4. $user = cmsUser::getInstance();
  5. $team_player = $this->model->getTeamPlayer($id);
  6. if (!$team_player) { cmsCore::error404(); }
  7. $is_edit = $user->is_admin || cmsUser::isAllowed('sport', 'edit', 'all') ||
  8. ( cmsUser::isAllowed('sport', 'edit', 'own') && $team_player['user_id']==$user->id );
  9. if (!$is_edit) { cmsCore::error404(); }
  10. $errors = false;
  11. $form = $this->getForm('player');
  12. $is_submitted = $this->request->has('submit');
  13. if ($is_submitted){
  14. $team_player = $form->parse($this->request, $is_submitted);
  15. $errors = $form->validate($this, $team_player);
  16. if (!$errors){
  17. $team_player['tournament_id'] = $id_team;
  18. $this->model->updateTeamPlayer($id, $team_player);
  19. $this->redirectToAction('team', array($тут tournament_id));
  20. }
  21. if ($errors){
  22. cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error');
  23. }
  24. }
  25. $template = cmsTemplate::getInstance();
  26. $template->render('form_player', array(
  27. 'do' => 'edit',
  28. 'form' => $form,
  29. 'errors' => $errors,
  30. 'tournament' => $team_player
  31. ));
  32. }
Вот дамп $team_player

  1.  
  2. (
  3. [id] => 372
  4. [tournament_id] => 4
  5. [user_id] => 3
  6. [team_name] => Phoenix
  7. [reserve] =>
  8. )
  9.  
Мне нужно как то вывести [tournament_id] в редирект, подскажите пожалуйста, я раньше делал щас никак не вспомню.
#2 11 июня 2017 в 18:52
А такой вариант не подходит?
  1. $this->redirectToAction('team', array($team_player['tournament_id']));
Ещё не совсем понятно, откуда возникло $id_team в 17 строке.
#3 11 июня 2017 в 19:09


А такой вариант не подходит?

  1. $this->redirectToAction('team', array($team_player['tournament_id']));
Ещё не совсем понятно, откуда возникло $id_team в 17 строке.

Loadырь

Да это просто я пытался что — то сделать. Не сработало. Может из за модели ?

  1. /* Редактирование пользователя */
  2. public function updateTeamPlayer($id, $team_player){
  3. return $this->update('sport_team_info', $id, $team_player);
  4. }
  5.  
  6. public function getTeamPlayer($id){
  7. return $this->getItemById('sport_team_info', $id);
  8. }
#4 11 июня 2017 в 19:21

я пытался что — то сделать

Нико
Может не надо пытаться, что-то сделать, а просто удалить 17 строку и будь, что будет?
#5 11 июня 2017 в 19:23


я пытался что — то сделать

Нико
Может не надо пытаться, что-то сделать, а просто удалить 17 строку и будь, что будет?

Loadырь

Я удалил.

  1. <?php
  2.  
  3. class actionSportPlayerEdit extends cmsAction {
  4.  
  5. public function run($id=false){
  6.  
  7. if (!$id) { cmsCore::error404(); }
  8. $user = cmsUser::getInstance();
  9.  
  10. $team_player = $this->model->getTeamPlayer($id);
  11.  
  12. if (!$team_player) { cmsCore::error404(); }
  13.  
  14. $is_edit = $user->is_admin || cmsUser::isAllowed('sport', 'edit', 'all') ||
  15. ( cmsUser::isAllowed('sport', 'edit', 'own') && $team_player['user_id']==$user->id );
  16.  
  17. if (!$is_edit) { cmsCore::error404(); }
  18.  
  19. $errors = false;
  20.  
  21. $form = $this->getForm('player');
  22.  
  23. $is_submitted = $this->request->has('submit');
  24.  
  25. if ($is_submitted){
  26.  
  27. $team_player = $form->parse($this->request, $is_submitted);
  28.  
  29. $errors = $form->validate($this, $team_player);
  30.  
  31. if (!$errors){
  32. $this->model->updateTeamPlayer($id, $team_player);
  33. $this->redirectToAction('team', array($team_player['tournament_id']));
  34. }
  35.  
  36. if ($errors){
  37. cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error');
  38. }
  39.  
  40. }
  41.  
  42. $template = cmsTemplate::getInstance();
  43.  
  44. $template->render('form_player', array(
  45. 'do' => 'edit',
  46. 'form' => $form,
  47. 'errors' => $errors,
  48. 'tournament' => $team_player
  49. ));
  50.  
  51. }
  52.  
  53. }
#6 11 июня 2017 в 19:29


я пытался что — то сделать

Нико
Может не надо пытаться, что-то сделать, а просто удалить 17 строку и будь, что будет?

Loadырь

Вот когда ставлю просто $id 307 перекидывает, а вот как мы делаем пусто без ничего.
#7 11 июня 2017 в 19:29
Тогда ищите в какой переменной у вас имеется информация о tournament_id. У вас есть $team_player и судя по дампу $team_player[tournament_id] => 4
На какой урл вас сейчас отправляет редирект после отправки формы?
#8 11 июня 2017 в 19:31

когда ставлю просто $id 307 перекидывает

Нико
так может вам нужен не 'tournament_id', а $this->redirectToAction('team', array($id'));
#9 11 июня 2017 в 19:39


когда ставлю просто $id 307 перекидывает

Нико
так может вам нужен не 'tournament_id', а $this->redirectToAction('team', array($id'));

Loadырь

Нет там есть команда у которой /team/4, а меня перекидывает на team/, а с $id team/307, а надо назад откуда перешел то есть на tournament_id (4)
#10 11 июня 2017 в 19:45


когда ставлю просто $id 307 перекидывает

Нико
так может вам нужен не 'tournament_id', а $this->redirectToAction('team', array($id'));

Loadырь

Я кажется понял но пока не понял как исправить сделал дамп в

if (!$errors){

dump($team_player);
$this->model->updateTeamPlayer($id, $team_player);
$this->redirectToAction('team', array($team_player['tournament_id']));
}

Сама форма отправляется.

Array
(
[reserve] => 1
)
#11 11 июня 2017 в 19:54

надо назад откуда перешел

Нико
  1. $this->redirectBack();
#12 11 июня 2017 в 19:57
Нико,
Вы в курсе, что можно посмотреть, что содержится в той или иной переменной (причем неважно, массив это, число, строка или объект), если вставить в код такую строку: print_r($ваша_переменная);?
#13 11 июня 2017 в 19:59


надо назад откуда перешел

Нико
  1. $this->redirectBack();

Loadырь

Да все работает так тоже делал но он перекидывает на редактирование опять, а нужно откуда нажал редактировать.
sport/team/4 вот сюда
с редиректом перекидвает сюда /sport/player_edit/372
#14 11 июня 2017 в 20:00


Нико,
Вы в курсе, что можно посмотреть, что содержится в той или иной переменной (причем неважно, массив это, число, строка или объект), если вставить в код такую строку: print_r($ваша_переменная); ?

Ris

ну я и делаю dump почему print_r
#15 11 июня 2017 в 20:11
  1. if (!$errors){
  2.  
  3. $this->model->updateTeamPlayer($id, $team_player);
  4. $team_player = $this->model->getTeamPlayer($id);
  5. $this->redirectToAction('team', array($team_player['tournament_id']));
  6. }
Решил проблему
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.