Puncte:0

Nu pot vedea acțiunea personalizată

drapel us

Încerc să creez o acțiune personalizată pentru operațiunile în bloc privind comenzile comerciale.

Folosesc următorul cod.

mymodule/src/Plugin/Action/DeleteOrderAndApps.php

spațiu de nume Drupal\mymodule\Plugin\Action;
    
utilizați Drupal\commerce_order\Entity\Order;
utilizați Drupal\Core\Action\ActionBase;
utilizați Drupal\Core\Session\AccountInterface;
utilizați Drupal\node\Entity\Node;
    
/**
 * Ștergeți comanda și acțiunea aplicațiilor atașate
 *
 * @Acțiune(
 * id = „șterge_ordine_și_aplicații”,
 * label = @Translation ("Ștergeți comanda și aplicațiile"),
 * tip = "comandă_comerț"
 * )
 */
clasa DeleteOrderAndApps extinde ActionBase {

  /**
   * {@inheritdoc}
   *
   */
  funcția publică execute(Order $order = NULL) {
    // â¦
  }

  /**
   * {@inheritdoc}
   */
  acces la funcția publică ($obiect, AccountInterface $cont = NULL, $return_as_object = FALSE) {
    $rezultat = $obiect->access('delete', $cont, TRUE);
    returnează $return_as_object ? $rezultat : $rezultat->este Permis();
  }
    
}

Nu sunt sigur că am nevoie de el, dar am și mymodule/config/install/system.action.delete_order_and_apps.yml fişier.

langcode: en
stare: adevărat
dependențe:
  modul:
    - comerț_comanda
id: delete_order_and_apps
etichetă: „Ștergeți comanda și aplicațiile”
tip: commerce_order
plugin: delete_order_and_apps
configurație: { }

Partea confuză este că există 2 opțiuni în bloc diferite: VBO și acțiunile în bloc ale core pentru entitatea Comanda. Din păcate, acestea nu folosesc aceleași definiții de acțiune, dar noua mea acțiune nu apare ca opțiune pentru niciuna dintre acestea atunci când creez o vizualizare. Am făcut multe dintre acestea în același mod, dar toate sunt acțiuni Node.

Nu sunt sigur dacă lipsește ceva din codul meu sau poate lipsește ceva din Commerce care este necesar pentru a permite adăugarea de acțiuni personalizate (ceva lipsește în definiția entității).

Folosesc Drupal 8.9.20 și modulul Commerce 8.x-2.24.

drapel id
Care este intrebarea? Avem nevoie de unul pentru a răspunde.
miststudent2011 avatar
drapel fr
Ajută asta? https://drupal.stackexchange.com/questions/295329/custom-action-plugin-with-configurationform
liquidcms avatar
drapel us
@miststudent2011, aceste postări par să fie în principal despre adăugarea unei configurații pentru o acțiune - care nu este această întrebare. Singura parte menționată acolo care lipsește este posibil fișierul .schema; dar nu le-am adăugat niciodată pe acelea pentru acțiunea (nodul) pe care le am de lucru.
Puncte:2
drapel cn

Presupunând că utilizați câmpul de bază „Actualizare în bloc”, pe care vizualizarea comenzii comerciale îl folosește imediat, trebuie să creați acțiunea ca entitate de configurare.

Aveți deja configurația pentru a face asta, dar va fi folosită numai când modulul este instalat.Dacă reușiți să dezinstalați, apoi să instalați din nou modulul, faceți asta și veți vedea acțiunea dvs. în Views unde ar trebui să fie:

introduceți descrierea imaginii aici

Dacă nu puteți reinstala modulul, adăugați un cârlig de actualizare în mymodule.post_update.php pentru a crea acțiunea manual, apoi executați actualizările bazei de date:

funcția mymodule_post_update_add_my_action() {
  \Drupal::entityTypeManager()->getStorage('action')->create([
    'id' => 'șterge_comenzi_și_aplicații',
    'label' => 'Ștergeți comanda și aplicațiile',
    'type' => 'commerce_order',
    'plugin' => 'șterge_ordine_și_aplicații',
  ])->salvare();
}

Dacă utilizați VBO, nu trebuie să creați entitatea de configurare, modulul va prelua acțiunea fără ea. Dacă acest lucru nu funcționează, asigurați-vă că totul este numit corect, cache-urile sunt șterse etc., deoarece cu siguranță este acolo:

introduceți descrierea imaginii aici

liquidcms avatar
drapel us
bine sa stiu ca am facut-o corect. Și m-am gândit că este ceva care ar fi declanșat doar cu dezinstalarea/reinstalarea modulului. Am făcut asta ieri înainte de a posta asta. Astăzi am încărcat o copie nouă a db-ului de pe site-ul nostru de producție, am executat un import de configurare și numeroase reconstruiri cache înainte de a vă vedea răspunsul și de a reveni la asta - și după activitățile zilei, acum apare. Nu sunt sigur ce a declanșat-o, dar mă bucur să știu că funcționează așa cum mă așteptam. Mulțumesc pentru răspunsul foarte detaliat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.