php sprintf не работает должным образом - PullRequest
0 голосов
/ 08 марта 2012
$actions = array(
    'EDIT'   => sprintf('<a href="admin-ajax.php?action=%s&subaction=%s&course_id=%d" class="%s" id="%s">Edit</a>',
                    'abf_cm',
                    'edit_course',
                    $item['course_id'],
                    'thickbox edit-box',
                    'edit_'.$item['course_id']
                    ),
    'DELETE'    => sprintf('<a href="?page=%s&task=%s&action=%s&bookid=%s&noheader=true">Delete</a>','course_management','do_process','delete',$item['course_id']),
);

При этом часть редактирования не отображается. Я делаю что-то не так. Я также пытался использовать заполнители

'EDIT'   => sprintf('<a href="admin-ajax.php?action=%1$s&subaction=%2$s&course_id=%4$d" class="%4$s" id="%5$s">Edit</a>',
                    'abf_cm',
                    'edit_course',
                    $item['course_id'],
                    'thickbox edit-box',
                    'edit_'.$item['course_id']
                    ),

но результатов пока нет. Я также заметил, что когда я удаляю атрибуты class и id в более ранней версии, он работает нормально.

Можете ли вы дать мне удовлетворительное объяснение этого и скажите, где я делаю неправильно.

EDIT:

Я использую это внутри Wordpress для создания пользовательской таблицы с использованием класса WP_List_Table

    function column_course_name($item ) {

    //Build row actions
    $actions = array(
        'EDIT'      => sprintf('<a href="admin-ajax.php?action=%s&subaction=%s&course_id=%d" class="%s" id="%s">Edit</a>',
                        'abf_cm',
                        'edit_course',
                        $item['course_id'],
                        'thickbox edit-box',
                        'edit_'.$item['course_id']
                        ),
        'DELETE'    => sprintf('<a href="?page=%s&task=%s&action=%s&bookid=%s&noheader=true">Delete</a>','book_management','do_process','delete',$item['course_id']),
    );

    //Return the title contents
    return sprintf('<a href="?page=book_management&action=viewnedit&bookid=%2$s">%1$s</a>%3$s',
        /*$1%s*/ strlen($item['course_name'])>0?$item['course_name']:'<span style="color:silver">(No Name)</span>',
        /*$2%s*/ $item['course_id'],
        /*$3%s*/ $this->row_actions($actions) //row_actions is a method in this class
    ); 
}

Обновление: Что ж, странно упоминать, но код работает, когда я использую один класс (т.е. когда я удаляю пространство между двумя классами для тега).

Есть мысли?

1 Ответ

0 голосов
/ 08 марта 2012

Дипеш, возможно у вас есть ошибки в коде вокруг этого фрагмента.

Попробуйте проверить свой код изолированно.Я скопировал ваш код в отдельный скрипт .php с небольшими настройками и проверил массив $actions с print_r, например:

edit_array.php

<?php
$item = array();
$item['course_id'] = 1;
$actions = array(
    'EDIT'   => sprintf('<a href="admin-ajax.php?action=%s&subaction=%s&course_id=%d" class="%s" id="%s">Edit</a>',
        'abf_cm',
        'edit_course',
        $item['course_id'],
       'thickbox edit-box',
       'edit_'.$item['course_id']
     ),
    'DELETE'    => sprintf('<a href="?page=%s&task=%s&action=%s&bookid=%s&noheader=true">Delete</a>','course_management','do_process','delete',$item['course_id']),
);

print_r($actions);

Я запустил этот скрипт из консоли и получил следующие результаты:

$ php edit_array.php 
Array
(
    [EDIT] => <a href="admin-ajax.php?action=abf_cm&subaction=edit_course&course_id=1" class="thickbox edit-box" id="edit_1">Edit</a>
    [DELETE] => <a href="?page=course_management&task=do_process&action=delete&bookid=1&noheader=true">Delete</a>
)

Сгенерированная ссылка для $actions['EDIT'] верна в формате HTML, поэтому можно смело утверждать, что сам код работает нормально, и ошибка кроетсягде-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...