이 컨트롤러가 있습니다 :
...
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’;