2013-08-17 3 views
0

Мне нужно отправить параметр из URL-адреса в контроллер cakephp. У меня есть таблица сообщений с двумя параметрами «ufrom» и «uto». в контроллере я хочу сохранить эти значения в таблице сообщений.параметр прохождения от url к cakephp

Я положил в URL:

http://localhost/ar/messages/add?ufrom=9&uto=3 

в MessagesController У меня есть функция:

public function add() { 

if(($this->request->query['uto'])and($this->request->query['ufrom'])){ 
     $this->Message->create(); 
     if ($this->Message->save($this->request->data)) { 
      $this->set('addMessage',TRUE); 
      $this->set('ufrom',$this->request->query['ufrom']); 
      $this->set('uto',$this->request->query['uto']); 
      $this->redirect(array('action' => 'index')); 
     } else { 
      $this->Session->setFlash(__('The message could not be saved. Please, try again.')); 
     } 

     $targets = $this->Message->Target->find('list'); 
     $this->set(compact('targets')); 
} 
else{ 
    $this->set('error',true); 
} 

}

и add.ctp я есть:

<?php 
if(isset($error)){ 
    echo('error'); 
} 
else{ 
    echo json_encode($ufrom); 
    echo json_encode($uto); 
    echo json_encode($addMessage); 
} 
?> 

но когда я использую вышеуказанный URL-адрес i:

Notice (8): Undefined variable: ufrom [APP\View\Messages\add.ctp, line 6]null 
Notice (8): Undefined variable: uto [APP\View\Messages\add.ctp, line 7]null 
Notice (8): Undefined variable: addMessage [APP\View\Messages\add.ctp, line 8]null 

И ничего не хранится в базе данных. Я новичок в cakephp. пожалуйста помоги.

ответ

5

здесь я могу предложить вам использовать Params как ниже

http://www.example.com/tester/retrieve_test/good/1/accepted/active 

, но если вам нужно использовать как этот путь

http://www.example.com/tester/retrieve_test?status=200&id=1yOhjvRQBgY 

вы можете получить значение, как показано ниже

echo $this->params['url']['id']; 
echo $this->params['url']['status']; 

в вашем случае будет

echo $this->params['url']['uto']; 
echo $this->params['url']['ufrom']; 
+0

спасибо за ваш но мои данные еще не хранятся в базе данных. – sahar

+0

http://stackoverflow.com/questions/9394080/cakephp-2-0-cannot-save pls ссылаются на это – liyakat

+0

спасибо большое. моя проблема решена. – sahar

0

Самый простой способ передать параметры действия контроллера будет просто передать их через действие в качестве аргументов, как так:

public function add($ufrom,$uto) 

Ваш URL должен выглядеть так:

http://localhost/ar/messages/add/9/3 

Вторично если данные поступают с URL-адреса, вы не будете использовать этот-> запрос-> данных, просто:

$message = array("Message"=>array("ufrom"=>$ufrom,"uto"=>$uto)); 
$this->Message->save($message); 
Смежные вопросы