-- wenbert <[EMAIL PROTECTED]> wrote
(on Saturday, 11 August 2007, 03:53 AM -0700):
>
> $this->_helper->redirector(null, 'error');
> does not also work. i have tried the others, it won't work too :(
The first argument has to be an action name; if it's empty, the
redirector doesn't know where to go. Use 'index' if you want it to go to
the default action of that controller.
> i get this error:
> Notice: Undefined property:
> Ekini_Controller_Action_Helper_MyAccessControlHelper::$_helper in
> /Applications/MAMP/htdocs/zend_quickstart/application/library/Ekini/Controller/Action/Helper/MyAccessControlHelper.php
> on line 73
You have to call action helpers from within action controllers, not
other helpers.
> Fatal error: Call to a member function redirector() on a non-object in
> /Applications/MAMP/htdocs/zend_quickstart/application/library/Ekini/Controller/Action/Helper/MyAccessControlHelper.php
> on line 73
>
> Where line 73 is: $this->_helper->redirector(null, 'error');
>
> also doing this: $this->_flashMessenger =
> $this->_helper->getHelper('FlashMessenger');
> in my ActionHelper, displays a similar error.
>
>
> Jack Sleight wrote:
> >
> > Use either:
> >
> > $this->_forward($action, $controller, $module) // Internal redirect, not
> > HTTP redirect
> > $this->_redirect($url)
> > $this->_helper->redirector($action, $controller, $module);
> >
> > So I guess you would probably want something like:
> >
> > $this->_helper->redirector(null, 'error');
> >
> > To redirect to the index action of the error controller, within the
> > current module.
> >
> > wenbert wrote:
> >> $this->_redirect($redirect); wont work...?
> >> how do i redirect to a certain controller when im in the Action Helper
> >>
> >> Full Code Below:
> >> <?php
> >> require_once('Zend/Controller/Action/Helper/Abstract.php');
> >> require_once('Zend/Loader.php');
> >> require_once('default/Models/Permissions.php');
> >> require_once('default/Models/Resources.php');
> >> require_once('default/Models/Roles.php');
> >> require_once('default/Models/UserRole.php');
> >> require_once('default/Models/Users.php');
> >>
> >> class Ekini_Controller_Action_Helper_MyAccessControlHelper extends
> >> Zend_Controller_Action_Helper_Abstract {
> >>
> >> /**
> >> * check if logged in user has access. redirects to $redirect if no
> >> access
> >> * returns null if no result otherwise returns the resultset
> >> *
> >> */
> >> public function hasAccess($redirect = '/')
> >> {
> >> Zend_Loader::loadClass('Zend_Auth');
> >>
> >> try {
> >>
> >> $dbAdapter = Zend_Registry::get('dbAdapter');
> >>
> >> $moduleName = $this->getRequest()->getModuleName();
> >> $controllerName = $this->getRequest()->getControllerName();
> >>
> >> //get the user identity, this is null if the user is not
> >> logged
> >> in
> >> $user = Zend_Auth::getInstance()->getIdentity();
> >>
> >> if ($user) {
> >> if ($user->id=='1') {
> >> return true;
> >> }
> >>
> >> //get all user roles for logged in user
> >> $userRoles = new UserRole();
> >> $roles = $userRoles->fetchAll('user_id="'.$user->id.'"');
> >>
> >> foreach ($roles as $role) {
> >>
> >> $sql = "
> >> SELECT p.*, r.*, u.*, rs.*
> >> FROM users_to_roles ur
> >> LEFT JOIN permissions p ON p.role_id = ur.role_id
> >> LEFT JOIN users u ON ur.user_id = u.id
> >> LEFT JOIN roles r ON p.role_id = r.id
> >> LEFT JOIN resources rs ON p.resource_id = rs.id
> >> WHERE ur.role_id=".$role->role_id."
> >> ";
> >>
> >> $acl = $dbAdapter->fetchAll($sql);
> >>
> >> foreach ($acl AS $row) {
> >> if ($row['resource_name'] == $controllerName AND
> >> $row['module'] == $moduleName AND $row['access'] == 'allow') {
> >> return true;
> >> } else if ($row['resource_name'] ==
> >> $controllerName
> >> AND $row['module'] == $moduleName AND $row['access'] == 'deny') {
> >> throw new Exception('You are not allowed to
> >> access this page. (Group Denied)') ;
> >> } else {
> >> throw new Exception('You are not allowed to
> >> access this page. (Denied)') ;
> >> }
> >> }
> >>
> >> }
> >> } else {
> >> throw new Exception('You are not logged in.') ;
> >> }
> >>
> >>
> >> } catch (Exception $e) {
> >> //$this->_flashMessenger->addMessage($e->getMessage());
> >>
> >> //im just doing this since i don't know how to redirect yet
> >> :(
> >> echo $e->getMessage();
> >> die();
> >>
> >> //$this->_redirect($redirect);
> >> //THIS WONT WORK
> >> }
> >> }
> >> }
> >>
> >
> > --
> > Jack
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/How-do-i-redirect-to-another-controller-inside-my-Action-Helper--tf4252603s16154.html#a12104447
> Sent from the Zend Framework mailing list archive at Nabble.com.
>
--
Matthew Weier O'Phinney
PHP Developer | [EMAIL PROTECTED]
Zend - The PHP Company | http://www.zend.com/