JQuery AJAX в рамках Zend - PullRequest
       6

JQuery AJAX в рамках Zend

0 голосов
/ 18 января 2012

Я новичок в ZF. Я хочу создать ajax-ссылку, которая пойдет к контроллеру "task", а действие "ajax" сделает что-то вроде этого

$registry = Zend_Registry::getInstance();  
$DB = $registry['DB'];
$sql = "SELECT * FROM task ORDER BY task_name ASC";
$result = $DB->fetchAll($sql);

, чем поместит результат в этот div

<div id="container">container</div>

это мое мнение, где я делаю это

<?php echo $this->jQuery()->enable(); ?>
<?php echo $this->jQuery()->uiEnable(); ?>
<div id="container">container</div>
<?php  
echo $this->ajaxLink("Bring All Task","task/ajax",array('update' => '#container'));
?>

Я не знаю синтаксис, как я буду это делать, ретушировать мой код, если я ошибаюсь, я много искал, но все напрасно, плзобъясните мне, поблагодарив всех вас в предвкушении, и направьте мне несколько хороших ссылок из учебника zendx_jquery

1 Ответ

1 голос
/ 19 января 2012

Это должно работать:

class IndexController extends Zend_Controller_Action 
{
    /**
     * Homepage - display result of ajaxRequest
     */
    public function indexAction()
    {
    }

    /**
     * Print result of database query 
     */
    public function ajaxAction()
    {   
        // disable rendering of view and layout
        $this->_helper->layout()->disableLayout();


        $registry = Zend_Registry::getInstance();  
        $db =  $registry['DB'];

        // get select object to build query 
        $select = $db->select();
        $select->from('task')->order('task_name ASC');

        // echo result or what ever..   
        $this->view->tasks = $db->fetchAll($select);
    }
}    



// index.phtml (view)
<?php 

    echo $this->jQuery()->enable(); 
    echo $this->jQuery()->uiEnable();

    // create link to ajaxAction
    $url = $this->url(array(
        'controller' => 'index',
        'action'     => 'ajax',
    ));
?>

<div id="container">container</div>

<?php 
    echo $this->ajaxLink(
        "Bring All Task", $url, array('update' => '#container')
    ); 
?>

и в вашем ajax.phtml

<?php  if ($this->tasks): ?>
  <table>
    <tr>
         <th>task ID</th>
         <th>task Name</th>
    </tr>
  <?php foreach($this->tasks as $task) : ?>
    <tr>
       <td><?php echo $task['task_id']; /* depending on your column names */ ?>
       </td>
       <td><?php echo $this->escape($task['task_name']); /* to replace " with &quot; and so on */ ?>
       </td>
    </tr>
  <?php endforeach; ?>
  </table>
<?php else: ?>
  No tasks in table.
<?php endif; ?>

в отношении БД вы должны сначала установить его где-то ранее в вашем коде, например, индекс фронт-контроллера.php или bootstrap.php, например:

$db = Zend_Db::factory('Pdo_Mysql', array(
  'host'     => '127.0.0.1',
  'username' => 'webuser',
  'password' => 'xxxxxxxx',
  'dbname'   => 'test'
));
Zend_Registry::set('DB', $db);
...