Browse Source

Resurrect changes from #8131

These changes were lost when we moved to the 3.next branch. This revives
those changes and solves #8259
mark_story 10 years ago
parent
commit
2224d73f86

+ 0 - 1
src/Error/ExceptionRenderer.php

@@ -183,7 +183,6 @@ class ExceptionRenderer
                 'format' => 'array',
                 'args' => false
             ]);
-            $viewVars['_serialize'][] = 'trace';
         }
         $this->controller->set($viewVars);
 

+ 1 - 1
src/Mailer/Email.php

@@ -1012,7 +1012,7 @@ class Email implements JsonSerializable, Serializable
             $className = App::className($config['className'], 'Network/Email', 'Transport');
             trigger_error(
                 'Transports in "Network/Email" are deprecated, use "Mailer/Transport" instead.',
-                E_USER_WARNING
+                E_USER_DEPRECATED
             );
         }
 

+ 2 - 2
src/ORM/Table.php

@@ -1030,7 +1030,7 @@ class Table implements RepositoryInterface, EventListenerInterface, EventDispatc
         if (isset($options['idField'])) {
             $options['keyField'] = $options['idField'];
             unset($options['idField']);
-            trigger_error('Option "idField" is deprecated, use "keyField" instead.', E_USER_WARNING);
+            trigger_error('Option "idField" is deprecated, use "keyField" instead.', E_USER_DEPRECATED);
         }
 
         if (!$query->clause('select') &&
@@ -1096,7 +1096,7 @@ class Table implements RepositoryInterface, EventListenerInterface, EventDispatc
         if (isset($options['idField'])) {
             $options['keyField'] = $options['idField'];
             unset($options['idField']);
-            trigger_error('Option "idField" is deprecated, use "keyField" instead.', E_USER_WARNING);
+            trigger_error('Option "idField" is deprecated, use "keyField" instead.', E_USER_DEPRECATED);
         }
 
         $options = $this->_setFieldMatchers($options, ['keyField', 'parentField']);

+ 1 - 1
src/View/JsonView.php

@@ -129,7 +129,7 @@ class JsonView extends SerializedView
      *
      * @param array|string|bool $serialize The name(s) of the view variable(s)
      *   that need(s) to be serialized. If true all available view variables.
-     * @return string The serialized data
+     * @return string|false The serialized data, or boolean false if not serializable.
      */
     protected function _serialize($serialize)
     {

+ 6 - 1
src/View/SerializedView.php

@@ -17,6 +17,7 @@ namespace Cake\View;
 use Cake\Event\EventManager;
 use Cake\Network\Request;
 use Cake\Network\Response;
+use RuntimeException;
 
 /**
  * Parent class for view classes generating serialized outputs like JsonView and XmlView.
@@ -85,7 +86,11 @@ class SerializedView extends View
         }
 
         if ($serialize !== false) {
-            return $this->_serialize($serialize);
+            $result = $this->_serialize($serialize);
+            if ($result === false) {
+                throw new RuntimeException('Serialization of View data failed.');
+            }
+            return (string)$result;
         }
         if ($view !== false && $this->_getViewFileName($view)) {
             return parent::render($view, false);