-- Bart McLeod <[email protected]> wrote
(on Monday, 27 April 2009, 08:37 PM +0200):
> 
> 
> Matthew Weier O'Phinney schreef:
> 
>     -- Bart McLeod <[email protected]> wrote
>     (on Monday, 27 April 2009, 06:11 PM +0200):
> 
> 
>         For all of you who are also wondering what is needed to replace the 
> good old
> 
>         require_once 'Zend/Loader.php';
>         Zend_Loader::registerAutoLoad();
> 
>         This is what is needed in it's most basic form:
> 
>         require_once 'Zend/Loader/Autoloader.php';
>         $loader = 
> Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
> 
> 
> 
>     In most cases, you won't even need to call setFallbackAutoloader(), btw.
> 
> 
> I tried immediately, but in my case I need it. What does it do actually? Will
> look that up in the manual.

By default, Zend_Loader_Autoloader acts as a namespace autoloader, and
only registers the Zend_ and ZendX_ namespace prefixes. That means that
if the class doesn't match these prefixes, the autoloader passes over
the class and moves on to the next autoloader registered, if any.

You can have it try to match _any_ namespace by setting it as the
fallback autoloader.

If you were using autoloading to load resources in your application
tree, the preferred approach is to use either
Zend_Loader_Autoloader_Resource or Zend_Application_Module_Autoloader
(which derives from the former); these will then perform autoloading for
those resources, typically in a separate namespace.


>         holografix . schreef:
> 
>             The form class in APPLICATION_PATH\forms\Login.php
> 
>             class Form_Login extends Zend_Form
>             {
>                 public function init() {
>                     $this->setAction('/login')
>                          ->setMethod('post')
>                          ->setName('formlogin')
>                          ->setAttrib('id', 'formlogin');
> 
>                     // Create and configure username element
>                     $username = $this->createElement('text', 'username');
>                     $username->setLabel('User')
>                              ->addValidator('alnum')
>                              ->addValidator('stringLength', false, array(3, 
> 15))
>                              ->setRequired(true)
>                              ->setAttrib("size", 20)
>                              ->setAttrib('maxLength', 20);
> 
>                     // Create and configure password element
>                     $password = $this->createElement('password', 'password');
>                     $password->setLabel('Password')
>                              ->addValidator('StringLength', false, array(3, 
> 15))
>                              ->setAttrib("size", 20)
>                              ->setAttrib('maxLength', 20)
>                              ->setRequired(true);
> 
>                     // Create and configure submit button element
>                     $submit = $this->createElement('submit', 'submit');
>                     $submit->setRequired(false)
>                            ->setIgnore(true)
>                            ->setLabel('Login');
> 
>                     // Add elements to form
>                     $this->addElement($username)
>                          ->addElement($password)
>                          ->addElement($submit);
> 
>                     return $this;
>                 }
>             }
> 
>             Thanks for the support
>             holo
> 
> 
>             2009/4/27 Matthew Weier O'Phinney <[email protected]>
> 
>                 -- holografix . <[email protected]> wrote
>                 (on Monday, 27 April 2009, 04:18 PM +0100):
>                 > problem
>                 > I forgot to tell that this dev box is Win Vista 32
>                 >
>                 > In bootstrap.php:
>                 >
>                 > $module = new Zend_Application_Module_Autoloader(array(
>                 >        'namespace' => '',
>                 >        'basePath'  => APPLICATION_PATH . '/forms'
>                 >  ));
>                 > Warning: include(C:\wwwroot\devapp\application/forms/forms//
>                 Login.php) [
>                 > function.include]: failed to open stream: No such file or 
> directory
>                 >
>                 > I change 'basePath' from APPLICATION_PATH . '/forms' to
>                 APPLICATION_PATH
>                 >
>                 > $module = new Zend_Application_Module_Autoloader(array(
>                 >        'namespace' => '',
>                 >        'basePath'  => APPLICATION_PATH
>                 >  ));
>                 > Renamed APPLICATION_PATH\forms\Form_Login.php to Login.php 
> and
>                 removed the
>                 > include of this file in controller action.
> 
>                 My bad -- I jumped the gun. Yes, basePath => APPLICATION_PATH 
> is what I
>                 meant to write.
> 
>                 > The file is loaded but the output is the same:
>                 >
>                 > <form action="/login"
>                 >       method="post"
>                 >       id="formlogin"
>                 >       name="loginform">
>                 >
>                 > <fieldset>
>                 >     <legend>Login</legend>
>                 >
>                 >     <form id="username"></form>
>                 >     <form id="password"></form>
>                 >     <form id="submit"></form>
>                 > </fieldset>
>                 > </form>
> 
>                 Can you provide the form class itself so I can take a look at 
> it? Right
>                 now, I have no idea what's wrong, nor how it could be 
> generated.
> 
>                 Thanks!
> 
>                 > Cheers
>                 > holo
>                 > 2009/4/27 Matthew Weier O'Phinney <[email protected]>
>                 >
>                 >     -- holografix . <[email protected]> wrote
>                 >     (on Monday, 27 April 2009, 02:34 PM +0100):
>                 >     > I have an application developed with ZF 1.7 and it 
> works fine
>                 up to ZF
>                 >     1.7.8.
>                 >     > After update developpment box to ZF to latest trunk 
> version,
>                 >     > starting to get notices about 
> Zend_Loader::registerAutoload(),
>                 saying
>                 >     it's
>                 >     > deprecated and will be removed in 2.0.0.
>                 >     > This application follows ZF directory structure and it
>                 registers a front
>                 >     > controller plugin where resources are initialized.
>                 >     >
>                 >     > New code in bootstrap.php:
>                 >     >
>                 >     > require_once 'Zend/Loader/Autoloader.php';
>                 >     >
>                 >     > $loader = Zend_Loader_Autoloader::getInstance()->
>                 setFallbackAutoloader
>                 >     (true);
>                 >     > $loader->registerNamespace('ZendExt_');
>                 >     >
>                 >     > $front = Zend_Controller_Front::getInstance();
>                 >     > $front->registerPlugin(new ZendExt_Plugin_Initialize
>                 (APPLICATION_ENV));
>                 >     >
>                 >     > Resources are initialized but have some problems with 
> loading a
>                 form.
>                 >     >
>                 >     > When opening the application, if one is not logged 
> in, it
>                 redirects to
>                 >     index/
>                 >     > login (Form_Login.php)
>                 >     > http://application => http://application/login
>                 >     >
>                 >     > Forms are in a dir called forms under application dir.
>                 >     > In login action I have this code
>                 >     >
>                 >     > public function loginAction()
>                 >     > {
>                 >     >     include APPLICATION_PATH . 
> "/forms/Form_Login.php";
>                 >     >
>                 >     >     $loginForm = new Form_Login();
>                 >     >
>                 >     >     ... validation and authentication
>                 >     > }
>                 >     >
>                 >     > The output is wrong
>                 >     >
>                 >     > <form action="/login" method="post" id="formlogin" 
> name=
>                 "formlogin">
>                 >     > <fieldset>
>                 >     >     <legend>Login</legend>
>                 >     >     <form id="username"></form>
>                 >     >     <form id="password"></form>
>                 >     >     <form id="submit"></form>
>                 >     > </fieldset>
>                 >     > </form>
>                 >     >
>                 >     >
>                 >     > With Zend_Loader there are no problems.
>                 >     > How can I fix the problem ?
>                 >
>                 >     Use a module autoloader:
>                 >
>                 >        $module = new 
> Zend_Application_Module_Autoloader(array(
>                 >            'namespace' => '',
>                 >            'basePath'  => APPLICATION_PATH . '/forms',
>                 >        ));
>                 >
>                 >     Then make sure your form is in the file:
>                 >
>                 >        APPLICATION_PATH/
>                 >            forms/
>                 >                Login.php
>                 >
>                 >     and contains the clas 'Form_Login'.
>                 >
>                 >     You can do that anywhere -- your bootstrapping code is 
> probably
>                 the best
>                 >     place, however. Once you have, you will not need to do 
> an
>                 >     include/include_once to get your form -- just 'new 
> Form_Login()'.
>                 >
>                 >     --
>                 >     Matthew Weier O'Phinney
>                 >     Project Lead            | [email protected]
>                 >     Zend Framework          | http://framework.zend.com/
>                 >
>                 >
> 
>                 --
>                 Matthew Weier O'Phinney
>                 Project Lead            | [email protected]
>                 Zend Framework          | http://framework.zend.com/
> 
> 
> 
> 
> 
> 
> 

-- 
Matthew Weier O'Phinney
Project Lead            | [email protected]
Zend Framework          | http://framework.zend.com/

Reply via email to