Как смешать js с php в phtml?
Как новый студент Magento думал, возможно ли сделать что-то подобное...
var url = product['image'];
var image = '<?=Mage::helper("imageprocessor")
->getImgProcessor( >> js variable here << ,10,20,NULL)?>';
Возможно ли это вообще? или единственный способ - это запрос ajax? Я пробовал "->getimgprocessor('+переменное имя+')" и тому подобное, но... это не работает таким образом.
3 answers
Итак, если я правильно понимаю, вы хотите использовать значение переменной Javascript в функции PHP.
К сожалению, это не сработает. Весь javascript происходит на стороне клиента, то есть в браузере. PHP - это серверный язык, все это происходит на сервере.
Как правило, в последовательности запросов происходит следующее:
- Клиент запрашивает у сервера страницу;
- Сервер получает запрос и ищет источник PHP для использования;
- В сервер обрабатывает ВЕСЬ PHP-код в действительный HTML-код, который может использовать браузер.
- Сервер отправляет готовый HTML-код клиенту;
- Браузер клиента считывает весь HTML-код и интерпретирует его, включая встроенный javascript.
- Выполняется javascript на стороне клиента.
Как вы можете видеть, код на стороне сервера не знает о Javascript или переменных, определенных в javascript, а браузер ничего не знает о PHP, используемом для создания страница. Если у вас есть объект Javascript, который вам нужно использовать в PHP, на самом деле есть только 2 варианта:
- Вы полностью выполняете обработку объектов на стороне сервера, поэтому вместо того, чтобы пытаться найти URL-адрес изображения в javascript, вы сохраняете и читаете его на стороне сервера;
- Вы используете AJAX-запрос для передачи URL-адреса изображения с сервера клиенту.
Если вы используете этот код в каком-либо файле шаблона, например, скажите
Тест.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>
Если я правильно понял, вам нужно добавить свой 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