The AjaxContext helper, in my opinion, is used to enhance an existing page
with Ajax functionality. That means your page would be accessible normally
without javascript, and then enhanced when javascript is available.

If your action is coded to be Ajax-only, and somehow a user requests that
page without Ajax, then it seems proper that an error of some type should be
thrown. You could create a new exception for this case, and throw it within
your action if the page is requested without Ajax:

public function facebookAction()
{
    if (null === $this->_helper->ajaxContext->getContext()) {
        throw new AjaxRequiredException('Ajax is required to view this
page');
    }
}

You could then test for this in your ErrorController and show a helpful
error message to the user.

Another option would be to create a facebook.phtml file that shows the
helpful error message.

--
Hector


On Tue, Mar 23, 2010 at 5:50 AM, umpirsky <umpir...@gmail.com> wrote:

>
> In init method of my controller I have
>
> public function init() {
>                $this->_helper->ajaxContext
>                        ->setActionContext('facebook', 'html')
>                        ->setActionContext('twitter', 'html')
>                        ->initContext();
>        }
>
> This loads facebook and twitter widgets via ajax. They are in
> facebook.ajax.phtml and twitter.ajax.phtml and this works ok. But, very
> often I see in my error logs
>
> 2010-03-23T00:15:00+01:00 ERR (3): exception 'Zend_View_Exception' with
> message 'script 'index/facebook.phtml' not found in path
> (application/modules/default/views/scripts/)' in Zend/View/Abstract.php:976
> Stack trace:
> #0 Zend/View/Abstract.php(876):
> Zend_View_Abstract->_script('index/facebook....')
> #1 Zend/Controller/Action/Helper/ViewRenderer.php(897):
> Zend_View_Abstract->render('index/facebook....')
> #2 Zend/Controller/Action/Helper/ViewRenderer.php(918):
>
> Zend_Controller_Action_Helper_ViewRenderer->renderScript('index/facebook....',
> NULL)
> #3 Zend/Controller/Action/Helper/ViewRenderer.php(957):
> Zend_Controller_Action_Helper_ViewRenderer->render()
> #4 Zend/Controller/Action/HelperBroker.php(277):
> Zend_Controller_Action_Helper_ViewRenderer->postDispatch()
> #5 Zend/Controller/Action.php(523):
> Zend_Controller_Action_HelperBroker->notifyPostDispatch()
> #6 Zend/Controller/Dispatcher/Standard.php(289):
> Zend_Controller_Action->dispatch('facebookAction')
> #7 Zend/Controller/Front.php(954):
>
> Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http),
> Object(Zend_Controller_Response_Http))
> #8 Zend/Application/Bootstrap/Bootstrap.php(97):
> Zend_Controller_Front->dispatch()
> #9 Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
> #10 public_html/index.php(24): Zend_Application->run()
> #11 {main}
>
> I assume that for some reason (may be disabled javascript or direct url
> visit) request goes not from ajax, but full page request without ajax
> headers and /format/html.
>
> How can I fix to show just widget content, and skipp this error?
> --
> View this message in context:
> http://n4.nabble.com/Help-with-ajaxContext-helper-tp1679001p1679001.html
> Sent from the Zend Framework mailing list archive at Nabble.com.
>

Reply via email to