Как удалить значение равное abcd из списка значений

Главные вкладки

Комментарии

Аватар пользователя bumble bumble 16 сентября 2019 в 16:03
5

Вам бы подтянуть навыки выражения мыслей. Ничерта не понятно, среднестатистическому мимо-проходящему.

Аватар пользователя Riaron Riaron 16 сентября 2019 в 17:15

есть некий тип материала basket хочу у него удалить значение артикула(много значенй нужно удалить одно) равное abcd

Аватар пользователя bumble bumble 16 сентября 2019 в 17:18

Что есть "значение артикула"? Запись одного из полей?
"удалить значение артикула" - значит у одного материала, типа "basket" удалить одно из значений его полей?

Аватар пользователя Riaron Riaron 16 сентября 2019 в 17:31

вод есть код но он не работает

<?php
      $user 
User::load(\Drupal::currentUser()->id());

        

$request= \Drupal::request()->query;
                    
$request=reset($request);
                    
$article$request['articul'];
        
$a=\Drupal::entityTypeManager()->getStorage('node')->loadByProperties([
            
'type' => 'basket',
            
'field_polzovatel'=>$user->getUsername(),
        ]);
        
        if(
count($a)>=1) {

        

$aa $node->get('field_artikuly')->getValue();

        

$key array_search($articlearray_column($aa'target_id'));

        

$node->get('field_artikuly')->removeItem($key);

        

$node->save();
?>
Аватар пользователя bumble bumble 16 сентября 2019 в 17:47

Хех... Ну и жесть, канеш... Попробую прокомментить:

<?php
      $user 
User::load(\Drupal::currentUser()->id()); // На кой черт загружать юзера из загруженного юзера? Почему обращаетесь к сервису статически? 
        

$request= \Drupal::request()->query// Снова, статика. Почему не используется DI?
                    
$request=reset($request); // Зачем меняется реквест? 
                    
$article$request['articul']; // Откуда 100% уверенность существования ключа? 
 
        // Статика! Читать "Закон Деметры"! Читать об именовании переменных! И о сервисах!
        
$a=\Drupal::entityTypeManager()->getStorage('node')->loadByProperties([
            
'type' => 'basket',
            
'field_polzovatel'=>$user->getUsername(),
        ]);
         
        
// Мдас... 
        
if(count($a)>=1) {
    
// ... get the list of associated classrooms
        
$aa $node->get('field_artikuly')->getValue(); // Откуда взялся "$node"??
    // ... get the key of the classroom
        
$key array_search($articlearray_column($classrooms'target_id'));  // Откуда взялся "$classrooms"??
        
return $key// Почему возврат значения посреди метода? 
    // ... remove the classroom
        
$node->get('field_artikuly')->removeItem($key); // Зачем что-то дальше происходит, если метод уже вернул значение? 
    // ... save the node.
        
$node->save();
?>

Слишком глубоко сидит непонимание процессов разработки, чтоб можно было указывать на причину "неработы" этого кода.

Рекомендации, субъективно:

  • Освойте навыки дебаггинга (XDebug, Devel tools)
  • Поинтересуйтесь основами программирования (почитайте книг, документацию PHP, Symfony и Drupal, в частности)
  • Набросайте на бумаге, для начала, то что пытаетесь осуществить, поймите как правильнее строить скрипт, и потом уже беритесь к реализации.
Аватар пользователя ivnish ivnish 16 сентября 2019 в 17:48

Ещё можно начать использовать контриб, иначе зачем вообще тут друпал? Обычного PHP вполне было бы достаточно.

Аватар пользователя bumble bumble 16 сентября 2019 в 17:51

Хз почему так, я ведь не вижу всего бекграунда.
Код - тоже можно, если нет контриба решающего задачу (и если есть, конечно, понимание того "как" кодом). Друпал, в таком случае, выступает фреймворком которым можно управлять с помощью кода.

Аватар пользователя voviko voviko 16 сентября 2019 в 17:28

даж не знаю как ответить. Во первых укажите модуль, который basket-e
во вторыххх.: может не надо добавлять? Или.....