Commit Graph

26 Commits

Author SHA1 Message Date
Alexander
c1206c33c2 [FrameworkBundle] Subrequests should always use GET method 2012-03-20 23:59:34 +01:00
Ismael Ambrosi
aa53b887d1 Sets _format attribute only if it wasn't set previously by the user 2012-03-11 16:56:20 -03:00
Fabien Potencier
33f68fe821 added a missing use statement 2012-01-16 07:42:19 +01:00
Fabien Potencier
564b4b91ae [FrameworkBundle] fixed a unit test 2011-11-12 09:17:56 +01:00
Fabien Potencier
bb5fb79c3d changed the way we store the current ob level (refs #2617) 2011-11-11 23:35:49 +01:00
Fabien Potencier
c31c512466 [FrameworkBundle] fixed output buffering when an error occurs in a sub-request 2011-11-07 18:25:31 +01:00
Fabien Potencier
380c67efc8 [FrameworkBundle] fixed HttpKernel when the app is stateless 2011-11-07 18:25:10 +01:00
Christophe Coevoet
ab8e760c68 Fixed the creation of the subrequests
The subrequest must be created using an absolute path to keep the
informations about the host and the base path.
Closes #2168
2011-09-18 00:24:28 +02:00
Martin Schuhfuss
79e4ed661b simplified assignment 2011-07-20 17:29:23 +02:00
Martin Schuhfuss
04302ffe98 simplified ternary-operator 2011-07-20 17:27:36 +02:00
Martin Schuhfuss
3a285c1548 fixed handling of null-values in attribute- and query-arrays
when esi is enabled and internal uris are generated for esi-tags, an
attribute-array consisting entirely of null-values isn't handled correctly.

The reason is that php's `http_build_query()`-method outputs an empty string
for such arrays:

    http_build_query(array('foo' => '')) == 'foo='
    http_build_query(array('foo' => null)) == ''

In the latter case, the generation of an URI in `HttpKernel::generateInternalUri()`
generates an URI that could not be matched by the corresponding route (ex.
`_internal/Controller/.html` opposed to `_internal/Controller/none.html` which
should be expected).

This commit adds a possible solution as well as a simple test for this issue.
2011-07-20 17:03:20 +02:00
Fabien Potencier
65200aa86a added missing license headers 2011-05-31 10:57:06 +02:00
Fabien Potencier
314684df24 [FrameworkBundle] made ESI URL relative as allowed by the spec (no need to generate absolute URLs)
see http://www.w3.org/TR/esi-lang (Section 3.1 "Relative URIs will be resolved relative to the template.")
2011-04-21 18:54:01 +02:00
Fabien Potencier
f232b3cdda reverted Merge remote branch 'kriswallsmith/kernel/shorter-bundle-names' 2011-04-04 11:10:56 +02:00
Fabien Potencier
fe19646470 [HttpKernel] made the _route request attribute _internal for embedded controller renderings 2011-04-01 07:39:12 +02:00
Kris Wallsmith
ade83e2e80 updated codebase to use shorter bundle names
Controllers:
"BlogBundle:Post:show" is now "Blog:Post:show"

Templates:
"BlogBundle:Post:show.html.twig" is now "Blog:Post:show.html.twig"

Resources:
"@BlogBundle/Resources/config/blog.xml" is now "@Blog/Resources/config/blog.xml"

Doctrine:
"$em->find('BlogBundle:Post', $id)" is now "$em->find('Blog:Post', $id)"
2011-03-27 06:25:43 -07:00
Bernhard Schussek
06c682b4fb Switched from Doctrine's EventManager implementation to the EventManager clone in Symfony2 (now called EventDispatcher again) 2011-03-13 19:49:10 +01:00
Bernhard Schussek
2cf3779a2c Renamed EventArgs classes and adapted remaining code to EventManager
The only missing part is ContainerAwareEventManager::addEventSubscriberService(),
because I'm not sure how to find out the class name of a service in the DIC.

Also, inline documentation of this code needs to be finished once it is accepted.
2011-03-07 19:16:05 +01:00
Bernhard Schussek
f1393d7b1f Replaced EventDispatcher by Doctrine's EventManager implementation
Doctrine's EventManager implementation has several advantages over the
EventDispatcher implementation of Symfony2. Therefore I suggest that we
use their implementation.

Advantages:

 * Event Listeners are objects, not callbacks. These objects have handler
   methods that have the same name as the event. This helps a lot when
   reading the code and makes the code for adding an event listener shorter.
 * You can create Event Subscribers, which are event listeners with an
   additional getSubscribedEvents() method. The benefit here is that the
   code that registers the subscriber doesn't need to know about its
   implementation.
 * All events are defined in static Events classes, so users of IDEs benefit
   of code completion
 * The communication between the dispatching class of an event and all
   listeners is done through a subclass of EventArgs. This subclass can be
   tailored to the type of event. A constructor, setters and getters can be
   implemented that verify the validity of the data set into the object.
   See examples below.
 * Because each event type corresponds to an EventArgs implementation,
   developers of event listeners can look up the available EventArgs methods
   and benefit of code completion.
 * EventArgs::stopPropagation() is more flexible and (IMO) clearer to use
   than notifyUntil(). Also, it is a concept that is also used in other
   event implementations

Before:

    class EventListener
    {
        public function handle(EventInterface $event, $data) { ... }
    }

    $dispatcher->connect('core.request', array($listener, 'handle'));
    $dispatcher->notify('core.request', new Event(...));

After (with listeners):

    final class Events
    {
        const onCoreRequest = 'onCoreRequest';
    }

    class EventListener
    {
        public function onCoreRequest(RequestEventArgs $eventArgs) { ... }
    }

    $evm->addEventListener(Events::onCoreRequest, $listener);
    $evm->dispatchEvent(Events::onCoreRequest, new RequestEventArgs(...));

After (with subscribers):

    class EventSubscriber
    {
        public function onCoreRequest(RequestEventArgs $eventArgs) { ... }

        public function getSubscribedEvents()
        {
            return Events::onCoreRequest;
        }
    }

    $evm->addEventSubscriber($subscriber);
    $evm->dispatchEvent(Events::onCoreRequest, new RequestEventArgs(...));
2011-03-05 15:30:34 +01:00
ornicar
b043bfde0b Do not catch subrequest exceptions, because it makes debugging hard. 2011-02-12 22:48:54 +01:00
Igor Wiedler
8cb3a237cc [FrameworkBundle] Allow any 2xx response code in a subrequest 2011-02-11 00:06:41 +01:00
Fabien Potencier
75404e6bd6 renamed HttpKernel/Cache/ namespace to HttpKernel/HttpCache/ 2011-01-26 21:44:54 +01:00
Fabien Potencier
0e66e388ec added two interfaces: EventInterface and EventDispatcherInterface 2011-01-25 14:23:32 +01:00
Fabien Potencier
73ab687521 moved ControllerResolver methods to HttpKernel (makes more sense) 2011-01-23 10:23:33 +01:00
Fabien Potencier
b577ce665a [HttpKernel] fixed scope management in HttpKernel
We should always leave the request scope at the end of the request processing.
If not, the HttpKernel leaves the container in a different state.
2011-01-23 08:47:00 +01:00
Johannes M. Schmitt
1d5b6ed908 adds scope to the DI container 2011-01-22 15:20:50 +01:00