Как смешать js с php в phtml?


Как новый студент Magento думал, возможно ли сделать что-то подобное...

    var url = product['image'];
    var image = '<?=Mage::helper("imageprocessor")
            ->getImgProcessor( >> js variable here << ,10,20,NULL)?>';

Возможно ли это вообще? или единственный способ - это запрос ajax? Я пробовал "->getimgprocessor('+переменное имя+')" и тому подобное, но... это не работает таким образом.

Author: Rob D. A., 2017-12-20

3 answers

Итак, если я правильно понимаю, вы хотите использовать значение переменной Javascript в функции PHP.

К сожалению, это не сработает. Весь javascript происходит на стороне клиента, то есть в браузере. PHP - это серверный язык, все это происходит на сервере.

Как правило, в последовательности запросов происходит следующее:

  • Клиент запрашивает у сервера страницу;
  • Сервер получает запрос и ищет источник PHP для использования;
  • В сервер обрабатывает ВЕСЬ PHP-код в действительный HTML-код, который может использовать браузер.
  • Сервер отправляет готовый HTML-код клиенту;
  • Браузер клиента считывает весь HTML-код и интерпретирует его, включая встроенный javascript.
  • Выполняется javascript на стороне клиента.

Как вы можете видеть, код на стороне сервера не знает о Javascript или переменных, определенных в javascript, а браузер ничего не знает о PHP, используемом для создания страница. Если у вас есть объект Javascript, который вам нужно использовать в PHP, на самом деле есть только 2 варианта:

  1. Вы полностью выполняете обработку объектов на стороне сервера, поэтому вместо того, чтобы пытаться найти URL-адрес изображения в javascript, вы сохраняете и читаете его на стороне сервера;
  2. Вы используете AJAX-запрос для передачи URL-адреса изображения с сервера клиенту.
 5
Author: Nzall, 2017-12-20 12:57:39

Если вы используете этот код в каком-либо файле шаблона, например, скажите

Тест.phtml

<?php $product = Mage::getModel('catalog/product')->load(1); ?>
<script>
     // To get Any data in your javascript variable
     var sku = '<?php echo $product->getSku() ?>';
     var image = '<?php echo Mage::helper('catalog/image')->init($product, 'thumbnail')->resize(100); ?>';
</script>
 6
Author: Priyank, 2017-12-20 10:30:47

Если я правильно понял, вам нужно добавить свой phtml в голову, тогда вы можете получить своего помощника в своем js

Приложение/дизайн/интерфейс/{ваш пакет}/{ваш модуль}/layout/local.xml

<reference name="head">
    <block type="page/html" name="my.custom.block" template="page/html/mycustomblock.phtml"/>
    <action method="addItem"><type>js</type><name>myjs.js</name></action>
</reference>

Приложение/дизайн/интерфейс/{ваш пакет}/{ваш модуль}/шаблон/страница/html/mycustomblock.phtml

<script type="text/javascript">
    var image = <?php echo Mage::helper('yourhelper')->yourMethod();?>;
</script>

И в вашем js вы можете получить помощника по изображению var image

Myjs.js

alert(image); //for exemple
 5
Author: PЯINCƏ, 2017-12-20 11:10:16