dev-rename-namespace
dev-rename-namespaceadd the json annotation for an action
The Development Requires
add the json annotation for an action
The JsonAnnotationBundle permits to use an annotation Json for your controller, (*1)
Use the annotation @Json() in your controller, (*2)
Some parameters are optionnals:, (*3)
json_annotation: exception_code: 500 #the http code used for the exception data_key: "data" # the key used to contains the data, it can be directly at the root, using the "" parameter exception_message_key: "message" #the key for the exeception message success_key: "success" #the key for the success (that is true is the result is ok, false for an exception) post_query_back: false #do we send back the post parameters post_query_key: "query" #the key for the post back parameters enable_authentication_error: false #A json response is sent back is the user is not authenticated or not granted
It is a json stream with the property 'success' with the true value and the property 'data' containing the array returned in the controller, (*4)
It is a json stream with the property 'success' with the false value and the property 'message' containing the error, (*5)
"tbn/json-annotation-bundle": "dev-master"
new tbn\JsonAnnotationBundle\JsonAnnotationBundle()
use tbn\JsonAnnotationBundle\Configuration\Json; class DefaultController extends Controller { /** * The main view * * @Route("/someroute") * @Json() * * @return array */ public function somerouteAction() { return array('data1' => 'value1', 'data2' => 'value2'); } }
It will send back a json stream, (*6)
'success' => true 'data' => ['data1' => 'value1', 'data2' => 'value2']
use tbn\JsonAnnotationBundle\Configuration\Json;, (*7)
class DefaultController extends Controller { /** * The main view * * @Route("/someroute") * @Json() * * @return array */ public function somerouteAction() { throw \Exception('some error occured'); } }
It will send back a json stream, (*8)
'success' => false 'message' => 'some error occured'
A pre-hook event is dispatched at the beginning of the json response. It can be used to validate a token for example., (*9)
some_bundle.listener.json_token_validation_listener: class: "some_bundle\\Listener\\JsonTokenValidationListener" tags: - { name: kernel.event_listener, event: json.pre_hook, method: onJsonPrehook }
The method has one argument of type JsonPreHookEvent., (*10)
public function onJsonPrehook(JsonPreHookEvent $jsonPreHookEvent)
add the json annotation for an action