I put together a basic test project.
Used the layout and the view tpl you provided.
I've got this as my controller function.
public function indexAction()
{
$jsonData = '--string from text file--';
$result = json_decode($jsonData);
var_dump($result);
}
I get a "hello world" and a var dump of the json data.
What needs to happen to the $results data for it to be used on the
layout/view?
Terre
-----Original Message-----
From: Jake McGraw [mailto:[EMAIL PROTECTED]
Sent: Friday, August 15, 2008 1:07 PM
To: Terre Porter; fw-general
Subject: Re: [fw-general] Zend_Json::decode in Controller causing Blank
Screen of Death
On Fri, Aug 15, 2008 at 12:31 PM, Terre Porter
<[EMAIL PROTECTED]> wrote:
>
> I've been following this a little.
>
> If I understand this right...
>
> The json decode works if you dump the var but not if you allow the
> page to run through the view.
>
> What happens in the view?
>
> You mention these :
>
> -- sets HTML head
> -- spits out contents
My Layout:
<?php
// <meta>
$this->headMeta()
->appendHttpEquiv('Content-Type', 'text/html;
charset=UTF-8')
->appendHttpEquiv('Content-Language', 'en-US');
$this->headTitle()
->headTitle('My Page', 'APPEND');
echo $this->doctype('XHTML1_STRICT');
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?= $this->headMeta() ?>
<?= $this->headTitle() ?>
</head>
<body>
<?= $this->layout()->content ?>
</body>
</html>
My View:
<h1>HELLO WORLD</h1>
In the course of debugging this, I've tried to take out all of the possible
bugs, I've narrowed it down to one thing: attempting to json_decode a
perfectly valid JSON string, which I've attached, prior to preDispatch(),
View, Layout rendering causes blank screen.
- jake
>
> Does the view do anything to the data? i.e. expect a exact array key
> to exist?
>
> Just some thoughts
> Terre
>
>
> -----Original Message-----
> From: Jake McGraw [mailto:[EMAIL PROTECTED]
> Sent: Friday, August 15, 2008 12:13 PM
> To: [email protected]
> Subject: Re: [fw-general] Zend_Json::decode in Controller causing
> Blank Screen of Death
>
>> Comment out the above line and see what happens -- this is what the
>> previous comment was getting at.
>>
>
> Still not working, commented out line, restarted apache, same issue...
> I'm not sure that this is related to json/xdebug, as
> Zend_Json::decode/json_decode both operate correctly with the same
> JSON string outside of the Zend MVC, it is only when I use any of the
> following:
>
> Zend_Json::decode($jsonString);
>
> Zend_Json::$useBuiltinEncoderDecoder = TRUE
> Zend_Json::decode($jsonString);
>
> json_decode($jsonString, TRUE);
>
> and then allow Layout, View to render that I get the blank screen.
> Note, I'm not actually doing anything with the resulting PHP array
> from the decoding. I'm not passing it to the view, which simply sets
> the HTML head and spits out the content. I'm just attempting to dump it.
>
> Again, thanks for the help!
>
> - jake
>
>>
>>> Again, nothing in error reporting, logging, etc. Just a blank screen.
>>> Also, this works fine (same JSON) outside of Zend_Controller_Action.
>>>
>>> > -Matt
>>> >
>>> > On Fri, Aug 15, 2008 at 8:20 AM, Jake McGraw <[EMAIL PROTECTED]>
> wrote:
>>> >>
>>> >> I've spent the last two days struggling with this error:
>>> >>
>>> >> We've been utilizing REST-ful JSON server for a couple of months
>>> >> now
> to host our data api (it's written using Zend Framework). Our client
> apps access this API, and decode the JSON. Yesterday, one of our
> client apps stopped working, generating no errors, no ouput, just a
> blank screen. After commenting out the majority of the code, we found
> the following code was causing the grief:
>>> >>
>>> >> <?php
>>> >>
>>> >> // BaseController extends Zend_Controller_Action class
>>> >> CustomController extends BaseController {
>>> >>
>>> >> public function someAction() {
>>> >>
>>> >> $result = $this->api->get('resource', array('field1' =>
>>> >> 'value1'));
>>> >>
>>> >> $result =
>>> >> Zend_Json::decode($result->getResponse()->getBody());
>>> >>
>>> >> var_dump($result);
>>> >>
>>> >> // exit;
>>> >> }
>>> >>
>>> >> }
>>> >>
>>> >> Now, we only get the blank screen when we allow our dispatcher to
> render our Zend_Layout, Zend_View AFTER using Zend_Json::decode, all
> the following logic steps work fine:
>>> >>
>>> >> - Uncomment exit, prevent Layout, View rendering
>>> >> var_dump($result); exit;
>>> >>
>>> >> - Check body for valid JSON (everything OK in JSON Lint)
>>> >> - Layout, View render correctly
>>> >> var_dump($result->getResponse()->getBody());
>>> >>
>>> >> - Try another JSON string
>>> >> - Layout, View render correctly
>>> >> var_dump(Zend_Json::decode('[{"foo":"bar"}]'));
>>> >>
>>> >> The JSON looks something like this:
>>> >>
>>> >> [
>>> >> {
>>> >> "cm_broadcast_type": "National Broadcast Networks",
>>> >> "id": "12659575",
>>> >> "station_id": "12336",
>>> >> "program_id": "EP010501290006",
>>> >> "start_time": "20080814000000",
>>> >> "end_time": "20080814010000",
>>> >> "cc": "Y",
>>> >> "title": "Greatest American Dog"
>>> >> },
>>> >> {
>>> >> "cm_broadcast_type": "National Broadcast Networks",
>>> >> "id": "11469048",
>>> >> "station_id": "12336",
>>> >> "program_id": "EP007537910036",
>>> >> "start_time": "20080814010000",
>>> >> "end_time": "20080814020000",
>>> >> "cc": "Y",
>>> >> "title": "Criminal Minds"
>>> >> },
>>> >> ... Continue ...
>>> >> ]
>>> >>
>>> >> So, as I've said, the problem only occurs when we allow the
>>> >> dispatcher
> to continue rendering Layout, View after using Zend_Json::decode, any
> help would be MUCH appreciated.
>>> >>
>>> >> - jake
>>>
>>
>> --
>> Matthew Weier O'Phinney
>> Software Architect | [EMAIL PROTECTED]
>> Zend Framework | http://framework.zend.com/
>>
>
>