symfony api rest bundle
librerias a instalar:
composer require friendsofsymfony/rest-bundle
composer require jms/serializer-bundle
habilitarlos:
new FOS\RestBundle\FOSRestBundle(),
new JMS\SerializerBundle\JMSSerializerBundle(),
para efectos de orden y no poner todo en el AppBundle voy a crear un bundle nuevo en donde manejare los controladores de la api
por consola:
php bin/console generate:bundle
llamemosle p.e ApiRestBundle
actualizar composer.json
en eclipse:
abrir composer.json ir a la pestaña de "autoload"
en el panel de psr-4 click en add ,
en el cuadro de dialogo
namespace: ApiRestBundle\
y en paths seleccionar el floder src/ApiRestBundle
luego por consola ejecutar:
composer dump-autoload
el comando de creacion de bundle
lo agrega automaticamente al AppKernel.php
y tambien genera una entrada en routing.yml
editemos el prefix en el routing, para que las llamadas sean precedidas por "api" entonces quedaria asi:
api_rest:
resource: "@ApiRestBundle/Controller/"
type: annotation
prefix: /api
en config.yml
# JMS serializer configuration
jms_serializer:
metadata:
auto_detection: true
handlers:
datetime:
default_format: 'Y-m-d H:i:s'
# FOSRest Configuration
fos_rest:
body_listener: true
format_listener:
rules:
- { path: '^/api', priorities: ['json'], fallback_format: json, prefer_extension: false }
- { path: ^/, priorities: [ html ], fallback_format: html, prefer_extension: true }
param_fetcher_listener: true
view:
view_response_listener: 'force'
formats:
json: true
se asume que se tiene ya una entidad creada en src/AppBundle/Entity
y su correspondiente repository en src/AppBundle/Repository
por ejemplo para Nota.php existe NotaRepository.php (que extiende de \Doctrine\ORM\EntityRepository)
en src/ApiRestBundle/Controller
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use FOS\RestBundle\Controller\FOSRestController;
use FOS\RestBundle\View\View;
class NotasController extends FOSRestController
{
/**
* @Route("/notas")
* @Method("GET")
*/
public function getAction()
{
$restresult = $this->getDoctrine()->getRepository('AppBundle:Nota')->findAll();
if ($restresult === null)
{
return new View("there are no notas exist", Response::HTTP_NOT_FOUND);
}
return $restresult;
}
}
y listo!
para probar, se puede abriri Postman
y en la url escribir:
http://localhost/api-test/web/app_dev.php/api/notas
deberia devolver algo asi:
[ { "id": 1, "titulo": "prueba", "contenido": "<p>lalalala</p>\r\n\r\n<p><strong>jojoj</strong></p>\r\n\r\n<p><strong>fefefe</strong></p>\r\n\r\n<ol>\r\n\t<li><strong>kakaka</strong></li>\r\n\t<li>huhuhuh</li>\r\n</ol>", "imagen": "24955519_922259481269966_842653723684610281_o.jpg", "esta_activo": true, "posicion": 2, "updated_at": "2017-12-14 04:10:23", "created_at": "2017-12-14 04:10:23" }, { "id": 2, "titulo": "otra prueba", "contenido": "<p>jajajaa</p>", "imagen": "160718114905-03-mind-of-bruce-lee-super-tease.jpg", "esta_activo": false, "posicion": 1, "updated_at": "2017-12-14 04:17:47", "created_at": "2017-12-14 04:17:47" } ]
fuentes:
http://www.phpbuilder.com/articles/tools/frameworks/creating-a-rest-api-in-symfony-3.html
https://jeremycurny.com/2016/03/27/symfony3-rest-api/
http://orgullo.users.sourceforge.net/blog/?p=406
https://www.cloudways.com/blog/rest-api-in-symfony-3-1/
ver
https://gist.github.com/diegonobre/341eb7b793fc841c0bba3f2b865b8d66
easyadmin symfony setear campo updatedAt para todas las entidades
crear // src/AppBundle/Controller/AdminController.php
class AdminController extends BaseAdminController
{
public function preUpdateEntity($entity)
{
if (method_exists($entity, 'setUpdatedAt')) {
$entity->setUpdatedAt(new \DateTime());
}
}
en routing.yml
easy_admin_bundle:
resource: '@AppBundle/Controller/AdminController.php'
class AdminController extends BaseAdminController
{
public function preUpdateEntity($entity)
{
if (method_exists($entity, 'setUpdatedAt')) {
$entity->setUpdatedAt(new \DateTime());
}
}
en routing.yml
easy_admin_bundle:
resource: '@AppBundle/Controller/AdminController.php'
symfony eliminar un bundle
1) quitarlo de AppKernel
2) en config.yml quitar cualquier referencia
3) en composer.json quitar la linea del require.
4) ejecutar composer update, esto borra la carpeta del bundle del directorio de vendor
2) en config.yml quitar cualquier referencia
3) en composer.json quitar la linea del require.
4) ejecutar composer update, esto borra la carpeta del bundle del directorio de vendor
easyadmin cfkeditor
siguiendo las intrucciones de instalacion del bundle cfkeditor
php bin/console ckeditor:install
no hace nada.
asi que continuar con el sgt paso
php bin/console assets:install --symlink
luego ir al archivo
vendor\egeloen\ckeditor-bundle\DependencyInjection\Compiler\ResourceCompilerPass.php
ir a la linea #43
y donde dice
IvoryCKEditorBundle:Form:ckeditor_widget.html.twig
cambiarla por
@IvoryCKEditor/Form/ckeditor_widget.html.twig
y listo.
limpiar la cache
php bin/console ckeditor:install
no hace nada.
asi que continuar con el sgt paso
php bin/console assets:install --symlink
luego ir al archivo
vendor\egeloen\ckeditor-bundle\DependencyInjection\Compiler\ResourceCompilerPass.php
ir a la linea #43
y donde dice
IvoryCKEditorBundle:Form:ckeditor_widget.html.twig
cambiarla por
@IvoryCKEditor/Form/ckeditor_widget.html.twig
y listo.
limpiar la cache
subir aplicacion symfony cpanel
luego de subir el sitio
ir a var/cache/prod
y borrar todo el contenido
ir a var/cache/prod
y borrar todo el contenido
symfony3.3 set charset utf8
si usas xampp:
ir a C:\xampp719\mysql\bin\my.ini
y en
[mnysqld] agregar las sgts lineas:
[mysqld] # Version 5.5.3 introduced "utf8mb4", which is recommended collation-server = utf8mb4_unicode_ci # Replaces utf8_unicode_ci character-set-server = utf8mb4 # Replaces utf8
aumentar memory limit
en php.ini
upload_max_filesize = 1000M
post_max_size = 2000M
memory_limit = 3000M
file_uploads = On
max_execution_time = 180
https://premium.wpmudev.org/blog/increase-memory-limit/
upload_max_filesize = 1000M
post_max_size = 2000M
memory_limit = 3000M
file_uploads = On
max_execution_time = 180
https://premium.wpmudev.org/blog/increase-memory-limit/
Suscribirse a:
Entradas (Atom)
linux ubuntu mint actualizar chrome
desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable
-
por consola y desde la raiz de tu proyecto php artisan --version
-
en nuestro proyecto creamos una carpeta llamada donde estaran todas nuestras clases, por ejemplo una llamada: MiApp adentro de esta irian b...
-
Integridad al nivel de la base de datos Oracle Oracle valida la integridad de la base de datos y presenta los siguientes mensajes de erro...