답변:
이를 수행하는 몇 가지 방법이 있습니다.
블록에 직접 할당 :
$block->assign($var);
또는
$block->assign(array('myvar'=>'value','anothervar'=>true));
그런 다음 phtml 파일에서 다음과 같이 액세스 할 수 있습니다.
$this->myvar
마법사 레지스트리를 사용하십시오.
Mage::register('custom_var', $var);
그런 다음 다음과 같이 사용하십시오.
$var = Mage::registry('custom_var');
$this->myvar
템플릿 파일 내에서
Mage::register($key, $value, ...)
. 그래서 Mage::register('custom_var', $var)
?
$block->assign('myvar',$var);
합니까?
Mage::register('custom_var', $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;
$block->setSomething()
또는 $block->assign()
. 이것은 "너무 많은 코드"처럼 느껴지며 가능한 한 많은 PHP를 피해야합니다.
당신이 블록 컨트롤러 안에 있다면.
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>
controllers
모듈 의 디렉토리 에서 발견 된 컨트롤러 동작에 관한 것 입니다.
이것은 컨트롤러에서 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';
$block->assign($var)
했지만phtml
파일 에서 어떻게 검색 합니까?