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


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.