컨트롤러에서 phtml로 데이터 보내기 ‘testcase’; $this->loadLayout();

이 컨트롤러가 있습니다 :

...
public function insertAction() {
    $something = 'testcase';
    $this->loadLayout();
    $this->_title($this->__("the title"));
    $this->renderLayout();
}
...

$something내 .phtml 문서에서 액세스 하고 싶습니다. 어떻게해야합니까? (또는 다른 방법으로 말하면 : $something.phtml 파일에서 어떻게 액세스 할 수 있습니까?)



답변

이를 수행하는 몇 가지 방법이 있습니다.

블록에 직접 할당 :

$block->assign($var);

또는

$block->assign(array('myvar'=>'value','anothervar'=>true));

그런 다음 phtml 파일에서 다음과 같이 액세스 할 수 있습니다.

$this->myvar

마법사 레지스트리를 사용하십시오.

Mage::register('custom_var', $var);

그런 다음 다음과 같이 사용하십시오.

$var = Mage::registry('custom_var');


답변

phtml은 블록으로 렌더링해야합니다. 블록 이름은 레이아웃에 있어야합니다.
당신은 전화 후이 작업을 수행 할 수 있습니다$this->loadLayout();

$block = Mage::app()->getLayout()->getBlock('block_name_here')
if ($block){//check if block actually exists
   $block->setSomething($something);
}

그런 다음 phtml파일 에서 값을 얻을 수 있습니다

$value = $this->getSomething();
//or 
$value = $this->getData('something');


답변

사람들이 누락 된 경우이 작업을 수행하는 또 다른 방법이 있습니다.

세션 사용

Mage::getSingleton('core/session')->setSomeSessionVar($data);// In the Controller
$data = Mage::getSingleton('core/session')->getSomeSessionVar(); // In the View;

출처


답변

당신이 블록 컨트롤러 안에 있다면.

class module_namespace_Block_example extends Mage_Core_Block_Template
{
      protected $_var;

     public function __construct(){

         $this->_var = "something";


     }
}

그런 다음 .phtml 파일에서

   <?php
        $variable = $this->_var;
        echo $variable; // prints "something"

   ?>

   <h1>You're inside your phtml file...... <?php echo $variable;  //prints "something" ?></h1>


답변

이것은 컨트롤러에서 phtml 파일로 데이터를 보내는 것이 매우 쉽습니다.

Step1 :-먼저 Model 클래스를 생성하고 Varien_Object에서 확장

class Namespace_Modulename_Model_Modelfilename extends Varien_Object
{

}

step2 :-이제 제어 파일을 열고 코드를 함수에 넣습니다.

$name='gaurav';
$this->loadLayout();
Mage::getSingleton('Modulename/Modelfilename')->setData('name',$name);
$this->renderLayout();

Step3 :-phtml 파일을 열고 코드를 넣습니다.

echo $name=Mage::getSingleton('Modulename/Modelfilename')->getData('name');

출력 :- ‘gaurav’;


답변