瀏覽代碼

Merge branch '2.1'

Thomas Rabaix 12 年之前
父節點
當前提交
4bacd4d1ba

+ 8 - 1
Admin/Admin.php

@@ -1993,7 +1993,10 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
                     $this->trans($this->getLabelTranslatorStrategy()->getLabel(sprintf('%s_%s', $this->getClassnameLabel(), $action), 'breadcrumb', 'link'))
                 );
             }
-
+        } elseif ($action != 'list' && $this->hasSubject()) {
+            $breadcrumbs = $child->getBreadcrumbsArray(
+                $this->toString($this->getSubject())
+            );
         } elseif ($action != 'list') {
             $breadcrumbs = $child->getBreadcrumbsArray(
 //                $this->trans($this->getLabelTranslatorStrategy()->getLabel(sprintf('%s_%s', $this->getClassnameLabel(), $action), 'breadcrumb', 'link'))
@@ -2531,6 +2534,10 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
      */
     public function toString($object)
     {
+        if (!is_object($object)) {
+            return '';
+        }
+
         if (method_exists($object, '__toString')) {
             return (string) $object;
         }

+ 2 - 1
Resources/doc/index.rst

@@ -35,6 +35,7 @@ Reference Guide
    reference/advance
    reference/console
    reference/preview_mode
+   reference/troubleshooting
 
 Overview
 --------
@@ -65,4 +66,4 @@ Overview
    :alt: The modal model edition
    :width: 700px
 
-   The modal model edition
+   The modal model edition

+ 0 - 1
Resources/doc/reference/architecture.rst

@@ -157,6 +157,5 @@ Note that you can use both the Bundle:Controller format or a `service name`_ to
 specify what controller to load.
 
 
-
 .. _`Django Project Website`: http://www.djangoproject.com/
 .. _`service name`: http://symfony.com/doc/2.0/cookbook/controller/service.html

+ 30 - 0
Resources/doc/reference/troubleshooting.rst

@@ -0,0 +1,30 @@
+Troubleshooting
+===============
+
+The toString method
+-------------------
+
+Sometimes the bundle needs to display your model objects, in order to do it, objects are converted to string by using the `__toString`_ magic method.
+Take care to never return anything else than a string in this method.
+For example, if your method looks like that :
+
+.. code-block:: php
+
+    public function __toString()
+    {
+        return $this->getTitle();
+    }
+
+
+You can't be sure your object will *always* have a title when the bundle will want to convert it to a string.
+So in order to avoid any fatal error, you must return an empty string (or anything you prefer) for when the title is missing, like this :
+
+.. code-block:: php
+
+    public function __toString()
+    {
+        return $this->getTitle() ?: '';
+    }
+
+
+.. _`__toString`: http://www.php.net/manual/en/language.oop5.magic.php#object.tostring

+ 2 - 0
Tests/Admin/BaseAdminTest.php

@@ -218,5 +218,7 @@ class BaseAdminTest extends \PHPUnit_Framework_TestCase
 
         $s = new FooTest_Admin;
         $this->assertEquals('salut', $admin->toString($s));
+
+        $this->assertEquals("", $admin->toString(false));
     }
 }