這應該是相當直接的問題,但無法找到如何去做。在前端,我有一個表單,其中包含一些編輯框或input-text
字段。在其中一個用戶將寫/粘貼博客網址。當用戶退出箱子時,我想:退出Magento填充編輯框
- 抓住此URL並從該博客解析/搜索/獲取與OpenGraph protocol相關的標記(如果存在)。如果沒有這種標籤,則會使用通常的
title
和相關標籤。 -
然後用變量的值來填補其他編輯領域目前的形式,標題,註釋,說明,圖像等
如何能夠將這些動作可以完成,AJAX可能?加上jQuery?或者其他解決方案? 現在我已經搜查,這裏有一些鏈接,我想可能是有用的:
- Need to display user's choices realtime in magento
- Using Basic AJAX calls within Magento
- Magento and AJAX.Updater
- Refreshing DIV content with AJAX
我有充分的工作模塊,幾種不同的模型,佈局,控制器,後端管理,幾個前端功能等等我甚至不知道從哪裏開始,哪些文件需要修改,以及要在表單上添加什麼內容。
EDIT
管理來完成第二點,從使用XMLHttpRequest
Ajax請求填使用應答其他輸入文件。這裏是不同的文件,以防萬一有人有不同的解決方案或一些建議。不會顯示所有的代碼,因爲它會太長。
PHTML文件:
<div id="blog_link_block">
<input class="input-text required-entry" onchange="showHint(this.value)"
name="blog_link" id="blog_link_field" type="text" style="width: 210px;"
value="" />
</div>
<div>
<label for="title_field"><?php echo $this->__('Title'); ?>
<span class="required">*</span>
</label><br />
<input class="input-text required-entry" name="title" id="title_field" type="text"
style="width: 450px;" value="" />
</div>
<script type="text/javascript">
function showHint(str)
{
<?php $block = Mage::getBlockSingleton('blogtest/product_view');
$temp = $block->getUrl('blogtest/blogtagsajax/index');?>
if (str.length==0)
{
document.getElementById("title_field").innerHTML = "";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("title_field").value = xmlhttp.responseText;
}
}
xmlhttp.open("GET","<?php echo $temp ?>?q="+str,true);
xmlhttp.send();
}
</script>
佈局文件:
<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">
<blogtest_blogtagsajax_index>
<reference name="root">
<remove name="root"/>
</reference>
<block type="blogtest/product_ajax" name="product.ajax" output="toHtml" />
</blogtest_blogtagsajax_index>
</layout>
控制器:
<?php
class Dts_Blogtest_BlogtagsajaxController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
$this->loadLayout();
$this->renderLayout();
}
}
PHP文件來處理該請求:
<?php
class Dts_Blogtest_Block_Product_Ajax extends Mage_Core_Block_Template {
public function __construct(){
echo self::myFunc();
}
public function myFunc() {
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
//get the q parameter from URL
$q=$_GET["q"];
//lookup all hints from array if length of q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++){
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))){
if ($hint==""){
$hint=$a[$i];
}
else{
$hint=$hint." , ".$a[$i];
}
}
}
}
if ($hint == ""){
$response="no suggestion";
}
else{
$response=$hint;
}
//output the response
return $response;
}
}