ZendX_JQuery : view helper pour les bouttons

Posté par seiyar81 le 13 avril 2010 | Laisser un commentaire (4)

Après le view helper pour la progressbar de jQuery UI, je me suis amusé à coder un view helper pour les bouttons. Le principe reste le même, cependant j’ai ajouté un paramètre pour gérer le passage des évènements à la création du boutton.

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category    ZendX
 * @package     ZendX_JQuery
 * @subpackage  View
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license     http://framework.zend.com/license/new-bsd     New BSD License
 * @version     $Id: Slider.php 20165 2010-01-09 18:57:56Z bkarwin $
 */

/**
 * @see ZendX_JQuery_View_Helper_UiWidget
 */
require_once "ZendX/JQuery/View/Helper/UiWidget.php";

/**
 * jQuery Button View Helper
 *
 * @uses 	   Zend_Json
 * @package    ZendX_JQuery
 * @subpackage View
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class ZendX_JQuery_View_Helper_Button extends ZendX_JQuery_View_Helper_UiWidget
{
    /**
     * Create a jQuery button
     *
     * @link   http://docs.jquery.com/UI/Button
     * @param  string $id
     * @param  string $value
     * @param  array  $params
     * @param  array  $attribs
     * @param  array  $events
     * @return string
     */
    public function button($id, $value, array $params = array(), array $attribs = array(), array $events = array())
    {
        if(!isset($attribs['id'])) {
            $attribs['id'] = $id;
        }

        $jqh = ZendX_JQuery_View_Helper_JQuery::getJQueryHandler();
        $params = ZendX_JQuery::encodeJson($params);
        $events = $this->getEvents($events);

        $js = sprintf('%s("#%s").button(%s)%s;', $jqh, $attribs['id'], $params, $events);
        $this->jquery->addOnLoad($js);
 
        $html = "<button ".$this->_htmlAttribs($attribs)." >";
        $html .= $value;
        $html .= '</button>';

        return $html;
    }

    public function getEvents($events)
    {
        if(!count($events)) return '';
        else {
            $retour = '';
            foreach ($events as $event => $function) {
                $retour .= '.'.$event.'('.$function.')';
            }
            return $retour;
        }
    }

}

Pour l’utiliser on place le fichier Button.php (avec le code ci-dessus) dans le dossier ZendX/JQuery/View/Helper/ et pour l’utiliser :

echo $this->button("button1", "Mon Button", array('icons' => new Zend_Json_Expr("{primary: 'ui-icon-gear'}")),
        array(), array('click'=> "function(){ alert('Hello World !'); }" ));

Enjoy !

Catégorie: Javascript, PHP, Zend Framework | Laisser un commentaire (4)

Zend Framework / jQuery : Exemple de “view helper”

Posté par seiyar81 le 29 mars 2010 | Laisser un commentaire (0)

Dans la continuité du précédent billet sur le Zend Framework et jQuery, j’ai codé un view helper pour la ProgressBar de jQuery UI.

Je suis tout simplement parti du code du slider que j’ai bien rogné et un peu modifié pour arriver à un code fonctionnel.

Sans plus attendre le voici :

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category    ZendX
 * @package     ZendX_JQuery
 * @subpackage  View
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license     http://framework.zend.com/license/new-bsd     New BSD License
 * @version     $Id: Slider.php 20165 2010-01-09 18:57:56Z bkarwin $
 */

/**
 * @see ZendX_JQuery_View_Helper_UiWidget
 */
require_once "ZendX/JQuery/View/Helper/UiWidget.php";

/**
 * jQuery ProgressBar View Helper
 *
 * @uses 	   Zend_Json
 * @package    ZendX_JQuery
 * @subpackage View
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class ZendX_JQuery_View_Helper_ProgressBar extends ZendX_JQuery_View_Helper_UiWidget
{
    /**
     * Create a jQuery progressbar
     *
     * @link   http://docs.jquery.com/UI/Progressbar
     * @param  string $id
     * @param  string $value
     * @param  array  $params
     * @param  array  $attribs
     * @return string
     */
    public function progressBar($id, $value, array $params = array(), array $attribs = array())
    {
        if(!isset($attribs['id'])) {
            $attribs['id'] = $id;
        }

        $jqh = ZendX_JQuery_View_Helper_JQuery::getJQueryHandler();

        if(count($params) <= 0) {
            $params = ZendX_JQuery::encodeJson(array('value'=>$value));
        } else {
            $params = ZendX_JQuery::encodeJson($params);
        }

        $js = sprintf('%s("#%s").progressbar(%s);', $jqh, $attribs['id'], $params);
        $this->jquery->addOnLoad($js);
 
        $html = "<div ".$this->_htmlAttribs($attribs)." >";
        $html .= '</div>';

        return $html;
    }
}

C’est simple et ça fonctionne !
Il suffit de créer le fichier : “ZendX/JQuery/View/Helper/ProgressBar.php” et d’y placer ensuite le code ci-dessus.

Ensuite pour l’utiliser c’est très simple dans vos vues :

echo $this->progressBar("progressBarId", 65);

Voilà en espérant que cela serve 🙂

Catégorie: Développement Web, PHP, Zend Framework | Laisser un commentaire (0)