поместить href-ссылку в строку массива в имеющейся функции в модуле php

Аватар пользователя rukoved rukoved 3 октября 2020 в 12:08

Всем добра!

Есть вопрос)
Как правильно вывести ссылку на другую страницу сайта в модуле php внутри имеющейся функции?
Ссылка размещена в строке массива.

У меня есть код

<?phpif(..............

  $output_desc_name_num= $output;
   
    $desc_name_ar = array(
        "1" => "<a href='http:\\test.com'>link</a>",
        "2" => "Описание.. 2",
        "3" => "Описание.. 3",

    );
     
        if($output_desc_name_num == 1){
            $desc_name = $desc_name_ar[1];
        }
     
        elseif($output_desc_name_num == 2){
            $desc_name = $desc_name_ar[2];
        }
                
        elseif($output_desc_name_num == 3)
            $desc_name =  $desc_name_ar[3];
                
        else 
            $desc_name ='';               
  

  ............
        return $response;
    
  }?>

Комментарии

Аватар пользователя rukoved rukoved 3 октября 2020 в 12:27

вообще то нет, я изучаю php сейчас, нашла несколько вариантов как это сделать в интернет, но это не работает для меня.

Аватар пользователя rukoved rukoved 3 октября 2020 в 12:40

это значение я получаю так-же
$output_desc_name_num= $output;, но ссылка все равно не отображается как ссылка, только текст

Аватар пользователя Punk_UnDeaD Punk_UnDeaD 3 октября 2020 в 13:01

где не отображается? в твиге?

там фильтр по умолчанию, который разметку в текст переводит

{{foo|raw}} так без фильтра
ну и вообще так не принято, надо или линк объект делать, или рендер массив, или в твиге ссылку форматировать

Аватар пользователя OldWarrior OldWarrior 3 октября 2020 в 22:46

rukoved wrote:
результат выводится в блоке модуля в форме я не использую твиг

Без полного примера кода будет сложно вам помочь.

PS. Ещё одно замечание относительно code style. Числовые ключи в массивах PHP хоть и допускаются в строковом представлении, но лучше (для однозначной интерпретации человеком) писать их именно как целые числа, т.е. без кавычек:

<?php
    
...
    
$desc_name_ar = array(
        
=> "<a href='http:\\test.com'>link</a>",
        
=> "Описание.. 2",
        
=> "Описание.. 3",
    );
    ...
?>

Тем более, что далее по коду вы адресуетесь к элементам по целочисленным значениям ключей. Т.е. здесь заключать ключи в кавычки никакого смысла нет.

Аватар пользователя rukoved rukoved 4 октября 2020 в 9:34

да-да, проблема была в кавычках, я поняла это)) благодарю, как поменяла, все заработало.

Аватар пользователя OldWarrior OldWarrior 3 октября 2020 в 23:01

rukoved wrote: но ссылка все равно не отображается как ссылка, только текст

По канонам значение атрибута href положено заключать в двойные кавычки. Т.е. вместо:

<?php
    
...
    
$desc_name_ar = array(
        
=> "<a href='http:\\test.com'>link</a>",
        
=> "Описание.. 2",
        
=> "Описание.. 3",
    );
    ...
?>

сделать так:

<?php
    
...
    
$desc_name_ar = array(
        
=> '<a href="http:\\test.com">link</a>',
        
=> "Описание.. 2",
        
=> "Описание.. 3",
    );
    ...
?>
Аватар пользователя rukoved rukoved 4 октября 2020 в 10:01

В таким виде работает -
"1" => "<a class='use-ajax' data-dialog-type='modal'  href=\"http://localsite.com/node/15\"> Ссылка - $output </a>",

не разобралась как туда теперь правильно ширину модального окна впихнуть - data-dialog-options='{'width': 700}'