কন্ট্রোলার থেকে পিটিএইচটিএমএল ডেটা প্রেরণ করুন


22

আমার এই নিয়ামক আছে:

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

আমি $somethingআমার। Phtml নথিতে অ্যাক্সেস করতে চাই , আমি এটি কীভাবে করব? (বা অন্য উপায়ে এটি রাখতে: আমি কীভাবে $somethingআমার। phtml ফাইলে অ্যাক্সেস করতে পারি )

উত্তর:


21

এটি করার কয়েকটি উপায় রয়েছে।

সরাসরি ব্লকে বরাদ্দ করুন:

$block->assign($var);

অথবা

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

তারপরে আপনি এটি পিটিএইচটিএমএল ফাইলটিতে এটি অ্যাক্সেস করতে পারবেন:

$this->myvar

ম্যাগ রেজিস্ট্রি ব্যবহার করুন:

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

এবং তারপরে এটি ব্যবহার করুন:

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

2
আপনি ব্যবহার করেছেন $block->assign($var)তবে কীভাবে phtmlফাইলে পুনরুদ্ধার হবে?
মোহাম্মদ ফয়সাল

আপনি $this->myvarটেমপ্লেট ফাইলের মধ্যে দিয়ে অ্যাক্সেস করতে পারবেন
ফিলিউঙ্কল

1
আমি বিশ্বাস করি Mage::register($key, $value, ...)। তো Mage::register('custom_var', $var),?
সঙ্গীতলিফ্সমে

4
এটা হওয়া উচিত $block->assign('myvar',$var);, তাই না?
frizmg

@ ফিলউইঙ্কল কী Mage::register('custom_var', $var); সেশনে মান লেখেন এবং এটি বর্তমান অ্যাকশন টেম্পলেট ছাড়াও অন্যান্য টেম্পলেট ফাইল থেকে অ্যাক্সেসযোগ্য হতে পারে?
প্রজাপতি

18

আপনার পিএইচটিএমএল অবশ্যই একটি ব্লক দ্বারা রেন্ডার করা উচিত। ব্লকের অবশ্যই লেআউটে একটি নাম থাকতে হবে।
কল করার পরে আপনি এটি করতে পারেন$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');

এটি আমার পক্ষে কাজ করে না :(, আমার কাছে একটি কন্ট্রোলার রয়েছে যা পণ্যগুলির প্রত্যক্ষদর্শনের জন্য এজেএক্সের মাধ্যমে প্রোডাক্ট আইডি ফিরিয়ে দেয়
শাথিশ

@Shathish। এটি একটি ভিন্ন বিষয়। আপনি প্রতিক্রিয়াটিকে JSON হিসাবে রেন্ড করতে পারেন এবং AJAX প্রতিক্রিয়া হ্যান্ডলারের মানগুলি ব্যবহার করতে পারেন।
মারিয়াস

হ্যাঁ আমি ব্লক (কিছুর.এফটিএমটিএল) সামগ্রীটি ফিরে আসতে এবং তালিকার পৃষ্ঠায় এই বিবরণটি দিয়ে ডিভিড আপডেট করতে JSON ব্যবহার করছি, আমি কীভাবে আমার নিয়ামক থেকে काहीतरी.এফটিএমএল এ ভেরিয়েবলটি পাস করতে পারি? আসলে আমি বর্তমানে এটি $ ব্লক-> অ্যাসাইন () পদ্ধতিটি ব্যবহার করে করছি, যা আমি মনে করি সঠিক উপায় নয় (যেমন এটি আঁটসাঁট মিলন - আমি ভুল হলে আমাকে সংশোধন করি) বা আমি কি এটি একটি প্রশ্ন হিসাবে পোস্ট করব?
শাথিশ

@ সম্ভবত আপনি অন্য একটি প্রশ্ন জিজ্ঞাসা করতে পারেন এবং আশা করি এটি সদৃশ হিসাবে চিহ্নিত না হয়েছে।
মারিয়াস

3

আপনি যদি লোকজন মিস করেন তবে এটি সম্পন্ন করার আরও একটি উপায় আছে

সেশন ব্যবহার করে

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

সূত্র


এমনকি যদি আপনি পরে এটা ব্যবহার করতে সেশনে তথ্য আছে, আমি ব্যবহার সুপারিশ $block->setSomething()বা $block->assign()। এটি "অত্যধিক কোড" বলে মনে হয় এবং এটি যথাসম্ভব এড়ানো উচিত ph
ফ্যাবিয়ান ব্লাচস্মিদট

-1

আপনি যদি আপনার ব্লক নিয়ন্ত্রকের মধ্যে থাকেন।

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মডিউলটির ডিরেক্টরিতে পাওয়া নিয়ন্ত্রক ক্রিয়াকলাপ সম্পর্কে ।
ফ্যাবিয়ান শেমংলার

-4

কন্ট্রোলার থেকে পিএইচটিএমএল ফাইলে ডেটা প্রেরণ করা খুব সহজ।

পদক্ষেপ 1: - প্রথমে মডেল বর্গ তৈরি করুন এবং ভারিওন_জেক্ট থেকে প্রসারিত

class Namespace_Modulename_Model_Modelfilename extends Varien_Object
{

}

পদক্ষেপ 2: - এখন কনট্রোলার ফাইলটি খুলুন এবং কোডটি ফাংশনে রাখুন।

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

স্টিপি 3: - পিএইচটিএমএল ফাইলটি খুলুন এবং কোডটি দিন।

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

আউটপুট: - 'গৌরব';

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.