Posted by Lato on March 17, 2018 at 1:19am
Hola
Estoy iniciando en el mundo de Drupal y escogí la versión 8, aunque des afortunadamente veo que no hay tantos módulos como en la versión 7.
El proyecto que estoy desarrollando consta de dos roles: Anunciante y Consumidor, el Anunciante puede publicar un tipo de contenido llamado Anuncio, sin embargo necesito que solo pueda publicar un anuncio
¿Cómo se le puede hacer para limitar la creación de contenido a solo uno?
Un saludo y de antemano gracias.
Comments
No estoy seguro si programas...
Esta porción de código valida (antes del submit del formulario) que el usuario actual no sea author de un "article" ya existente.
<?php
function check_authority()
{
$userid = \Drupal::currentUser()->id();
$nids = \Drupal::entityQuery('node')
->condition('type', 'article')
->execute();
foreach ($nids as $nid) {
$authorid = Node::load($nid)->getOwnerId();
if ($authorid === $userid) {
return TRUE;
}
}
return FALSE;
}
function node_creation_restriction_form_node_form_alter(&$form, FormStateInterface $form_state)
{
$form['#validate'][] = 'node_creation_resriction_node_form_validate';
}
function node_creation_resriction_node_form_validate($form, FormStateInterface $form_state)
{
$node = $form_state->getFormObject()->getEntity();
if ($node->getType() == 'article') {
if (check_authority()) {
$form_state->setErrorByName('Restricted node creation', t('This user is already author of an article.'));
}
}
}
?>
Alexis Rengifo
Si programo gracias
Muchas gracias por el código, aunque tiene rato que no agarro php no creo tener mayor problema.
Sólo me queda una duda. ¿Dónde inyectó el código?
¿Hay alguna forma de ver el código fuente ?
De nuevo gracias.
Lo puse en github
Este es el repositorio.
Alexis Rengifo
Gracias
Ya voy entendiendo un poco mas como funciona Drupal.
Probe el código y funciona, muchas gracias.