10
votes

Zend Framework "$ ceci"

Je suis nouveau dans le cadre Zend et j'ai une question de base.

suppose que je travaille avec layout.phtml ou avec l'index.phtml de tout script.

Quand j'utilise "$ ceci->" à quelle instance suis-je en train de faire?

J'ai lu dans un livre ce qui suit: "Ceci est disponible dans le fichier de modèle et c'est la passerelle de la fonctionnalité de Zend_View".

Cela signifie-t-il que je peux accéder à n'importe quelle méthode, de toute classe qui réside dans n'importe quel fichier dans le répertoire de la bibliothèque / Zend / View / APPARTEMENT?

Excusez-moi si cette question est assez stupide et / ou assez simple.

merci


0 commentaires

5 Réponses :


15
votes

$ ceci -> dans un modèle de vue est une référence à l'objet Zend_View que vous créez dans votre contrôleur.

Essayez var_dump ($ this) ou print_r ($ this) (echo sorti un avant le formatage imprimé) dans le gabarit. Var Varm pourrait vous aider à déterminer ce qui se passe un peu mieux.


0 commentaires

2
votes

Généralement, vous allez attribuer un peu de données à l'objet de la vue à l'intérieur d'une action de contrôleur à l'aide de quelque chose comme: xxx pré>

dans votre script de vue, vous accédez normalement à ces données à l'aide de quelque chose comme: P>

<?php echo $this->doctype() . "\n"; ?>
<html>
    <head>
        <?php echo $this->headMeta() . "\n" ?>
        <?php echo $this->headLink() . "\n" ?>
        <!--[if lt IE 8]>
          <link rel="stylesheet" href="/css/blueprint/ie.css" type="text/css" media="screen, projection" />
        <![endif] -->
    </head>


2 commentaires

Excellente réponse, mais cela ne fait pas référence à la question de l'OP. Vous avez expliqué comment utiliser la pseudo variable de la pseudo plutôt que quel objet il fait référence.


@vascowhite Vous êtes correct, j'ai référencé l'objet Affichage plusieurs fois mais n'a jamais expliqué ce que l'objet d'affichage était. Bien que je pense qu'entre nous deux, il a eu un cours de crash dans ce que c'est et comment l'utiliser. :) Même l'argent, j'ai répondu à la question qu'il voulait demander. ;)



4
votes

Lorsque vous utilisez $ Ceci est code> dans un fichier .phtml, vous vous référez à une instance de zend_view . Cet objet est configuré pour vous par votre objet contrôleur qui est une instance de Zend_Controller_action .

Zend_Controller_action garantit que votre objet de vue a accès à des aides de vue dont il a besoin. Donc, oui, vous avez accès à tous les aides au répertoire de la bibliothèque / Zend / Zend / Affichage / Aide via le $ CU code> variable. P>

Vous avez également accès à tous les aides que vous avez Ecrivez-vous et placez-vous dans le répertoire Application / Vues / Aideurs via $ CU code>. Voir le manuel sur écrire vos propres assistants . Une fois que vous avez commencé, vous les utiliserez tout le temps car il s'agit d'une méthode très simple et puissante de garder votre Code sèche . p>

Incidemment, vous avez également un accès direct de la même manière à tout filtres Vous placez dans le répertoire Application / Vues / Filters comme vous pouvez le constater à partir de la DOCBLOCK pour initview () dans Zend / Controller / Action.php. P>

/**
 * Initialize View object
 *
 * Initializes $view if not otherwise a Zend_View_Interface.
 *
 * If $view is not otherwise set, instantiates a new Zend_View
 * object, using the 'views' subdirectory at the same level as the
 * controller directory for the current module as the base directory.
 * It uses this to set the following:
 * - script path = views/scripts/
 * - helper path = views/helpers/
 * - filter path = views/filters/
 *
 * @return Zend_View_Interface
 * @throws Zend_Controller_Exception if base view directory does not exist
 */
public function initView()


0 commentaires

0
votes

Comme dit $ Celui-ci code> est une instance de Zend_View.

Veuillez voir la méthode rendu dans Zend_View Class P>

   public function render($name)
    {
        // find the script file name using the parent private method
        $this->_file = $this->_script($name);
        unset($name); // remove $name from local scope

        ob_start();
        $this->_run($this->_file);

        return $this->_filter(ob_get_clean()); // filter output
    }


0 commentaires

0
votes

En plus des autres réponses, $ CU vous aidera à utiliser les aides que vous définissez dans le répertoire Application / View / View / Helper .phtml ou les fichiers de vue de votre projet en les liant avec zend_helper dans l'initializer.


0 commentaires