Web Developer, Drupalero, Mobile Developer (iOS Especialist)
Pocket Lab / @omers / Drupal ID: omers / Git User: omero
Actualmente el poder que Drupal está adquiriendo en el mercado para aplicaciones robustas es MUCHO, debido al gran poder de escalabilidad que nos ofrece la herramienta
Framework MVC JavaScript tipo Front-end que nos permite desarrollas Aplicaciones de tipo SPA
Es una solucion completa no tiene comparacion con librerias como jQuery, Knocout, etc
Extencion de vocabulario del html (directivas)
No se manipula el dom directamente (selectores)
Data binding (brujeria)
Es noble (no tiene conflictos con librerias terceras)
$scope
DataBinding
Form
Filter
Directivas
Dependency Injection
Es un objeto que se refiere a la aplicacion del modelo, el contexto de ejecucion para las expresiones angular
Es el pegamento entre el controlador de la aplicación y la vista.
Es la sincronización de datos entre el modelo y la vista
Data Binding Tradicional
Two-Way Data Binding
Se pueden hacer validaciones inmediatas
Facil asimilación del two-way data Binding (ng-model)
Mejor UX (retroalimentación instantanea)
Un filtro formatea el valor de la expresión para mostrarla al usuario
{{ expression | filter }}
Es de donde proviene el poder de extension del html
Desde un punto de vista superficial, las directivas son marcadores del DOM (atributos, elementos HTML)
<date-picker></date-picker>
<input date-picker>
var app = angular.module('myapp', []);
app.directive('helloWorld', function() {
return {
restrict: 'AE',
replace: 'true',
template: 'Hello World!!'
};
});
Recurso index innecesario (REST export is the new sexy)
Interfaz basica para el modulo REST
user_detail.user_detail_controller_userGet:
path: 'user-detail/{uid}'
defaults:
_controller: '\Drupal\user_detail\Controller\UserDetailController::userGet'
_title: 'user_detail Title'
requirements:
_permission: 'access content'
public function userGet($uid)
{
$account = $this->user->load($uid);
if (isset($account)) {
$picture = $account->get('user_picture')->getValue();
$url = $this->file->load($picture[0]['target_id']);
$arr_user = $account->toArray();
$json_user = [
'uid' => $arr_user['uid'][0]['value'],
'mail' => $arr_user['mail'][0]['value'],
'name' => $arr_user['name'][0]['value'],
'created' => $arr_user['created'][0]['value'],
'login' => $arr_user['login'][0]['value'],
'field_name' => $arr_user['field_name'][0]['value'],
'field_last_name' => $arr_user['field_last_name'][0]['value'],
'field_twitter' => $arr_user['field_twitter'][0]['value'],
'field_facebook' => $arr_user['field_facebook'][0]['value'],
'field_description' => $arr_user['field_description'][0]['value'],
'user_picture' => $url->url(),
];
return new JsonResponse($json_user);
}
return new JsonResponse('User Null :P');
}
http://7sabores.com/blog/implementar-cross-origin-resource-sharing-drupal-7
https://github.com/omero/user-finder
https://github.com/omero/User-Deatil-Drupal8
https://www.getpantheon.com/blog/headless-websites-headless-drupal-options
https://www.getpantheon.com/blog/headless-drupal-demo-working-code-and-call-action
https://groups.drupal.org/headless-drupal
Join us !!!!