...
Go to the eZ publish installation
cd <ezpublish installation root>
Generate a new BundlBundle
php app/console generate:bundle
Now follow the instructions
add a Command directory to the bundle
add the following class file. This will create a bundle eZ/Publish/Bundle/CookBookBundle in the src directory of the installation root.
Code Block | ||
---|---|---|
| ||
Welcome to the Symfony2 bundle generator
Your application code must be written in bundles. This command helps
you generate them easily.
Each bundle is hosted under a namespace (like Acme/Bundle/BlogBundle).
The namespace should begin with a "vendor" name like your company name, your
project name, or your client name, followed by one or more optional category
sub-namespaces, and it should end with the bundle name itself
(which must have Bundle as a suffix).
See http://symfony.com/doc/current/cookbook/bundles/best_practices.html#index-1 for more
details on bundle naming conventions.
Use / instead of \ for the namespace delimiter to avoid any problem.
Bundle namespace: eZ/Publish/Bundles/CookbookBundle
In your code, a bundle is often referenced by its name. It can be the
concatenation of all namespace parts but it's really up to you to come
up with a unique name (a good practice is to start with the vendor name).
Based on the namespace, we suggest eZPublishBundlesCookbookBundle.
Bundle name [eZPublishBundlesCookbookBundle]:
The bundle can be generated anywhere. The suggested default directory uses
the standard conventions.
Target directory [.../ezpublish5/src]:
Determine the format to use for the generated configuration.
Configuration format (yml, xml, php, or annotation) [annotation]: yml
To help you get started faster, the command can generate some
code snippets for you.
Do you want to generate the whole directory structure [no]? yes
Summary before generation
You are going to generate a "eZ\Publish\Bundles\CookbookBundle\eZPublishBundlesCookBookBundle" bundle
in ".../ezpublish5/src/" using the "yml" format.
Do you confirm generation [yes]? yes
Bundle generation
Generating the bundle code: OK
Checking that the bundle is autoloaded: OK
Confirm automatic update of your Kernel [yes]? yes
Enabling the bundle inside the Kernel: OK
Confirm automatic update of the Routing [yes]? yes
Importing the bundle routing resource: OK
You can now start using the generated code!
|
Add a Command directory to the bundle
cd <ezpublish installation root>/eZ/Publish/Bundle/CookbookBundle
mkdir Command
add the following class file CookbookCommand.php in the directory Command
Code Block | ||||
---|---|---|---|---|
| ||||
<?php /** * File containing the CookbookCommand class. * * @copyright Copyright (C) 2012 eZ Systems AS. All rights reserved. * @license http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2 * @version //autogentag// */ namespace eZ\Publish\Bundle\CookbookBundle\Command; use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; class CookbookCommand extends ContainerAwareCommand { protected function configure() { // define a new app console command 'cookbook:run' $thiswhich takes one argument mapped to contentId $this->setName( 'cookbook:run' ) ->setDefinition( array( new InputArgument( 'contentId', InputArgument::REQUIRED, 'An existing content id' ) ) ); } protected function execute( InputInterface $input, OutputInterface $output ) { // fetch the command $contentId line argument $contentId = $input->getArgument( 'contentId' ); /**/ @varget $repository \eZ\Publish\API\Repository\Repository */ the repository from DI container $repository = $this->getContainer()->get( 'ezpublish.api.repository' ); // get the content service from the repository $contentService = $repository->getContentService(); try { // call loadContentInfo and print out print_r( $contentService->loadContentInfo( $contentId ) ); } catch( \eZ\Publish\API\Repository\Exceptions\NotFoundException $e ) { $output->writeln( "No content with id $contentId" ); } } } |
run f.e.
run php app/console cookbook:runrun 57
Receipt 2 - Creating a content type group and a simple content type
...