PHP, CakePHP, HTML: тег привязки добавляется внутри тега кода, как можно отделить этот тег привязки? - PullRequest
0 голосов
/ 05 октября 2011
echo '<tr class="class_row">';
echo '<td>';

echo $this->Html->link($post['Post']['title'],
                array('controller'=>'posts','action'=>'view',$post['Post']['id']),
                array('id'=>'id_anchor_title','class'=>'class_anchor_title') );
echo '<h6><i>'.$this->Time->format('d-M-Y',strtotime($post['Post']['created'])).'</i></h6>';
echo '<br/>';                           
$last_paragraph=$post['Post']['body'];
$length = strlen($last_paragraph);                  
echo $this->Text->truncate($last_paragraph,150,array('ending' => '...','exact' => false));
echo '<br/>';
//echo debug($last_paragraph);
if($length > 151){
    echo $this->Html->link('more',
                array('controller'=>'posts','action'=>'view',$post['Post']['id']),
                array('id'=>'id_anchor_more','class'=>'class_anchor_more') );
}
                echo '</td>';
echo '<td>'.$this->Html->link('Edit',
                    array('controller'=>'posts','action'=>'edit',$post['Post']['id']) ).'</td>';
echo '<td>'.$this->Html->link('Delete',
                    array('controller'=>'posts','action'=>'delete',$post['Post']['id'])).'</td>';
echo '</td>';
echo '</tr>';

Ссылка / якорь 'more' добавляется в качестве содержимого / тела сообщения, когда я публикую что-либо.

Как я могу сделать / поставить перерыв и остановить элемент more как элементof body?

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

<a href="/posts/view/37" id="id_anchor_more" class="class_anchor_more">more</a>

Ссылка должна быть внутри:

<table>
<tr>
<td>Content..Data.. <br/>'more' </td>
<td>Edit</td>
<td>Delete</td>
</tr>
</table>

Может ли кто-нибудь помочь мне решить эту проблему?

Невозможно поместить тело и 'more' в одном столбце <td> проблема в том, что я использую синтаксический указатель http://alexgorbatchev.com/SyntaxHighlighter/, когда я помещаю некоторый код в тег <pre class="brush: cpp"> ...body.. </pre>, возникает проблема.

Ответы [ 3 ]

2 голосов
/ 05 октября 2011
<style>
    table tr td h6{font-style: italic;}
</style>
<tr class="class_row">
    <td>
        <?php
        echo $this->Html->link($post['Post']['title'],
            '/posts/view'.$post['Post']['id'],
            array('id'=>'id_anchor_title','class'=>'class_anchor_title')
        );?>
        <h6><?php echo $this->Time->format('d-M-Y',strtotime($post['Post']['created']));?></h6>
        <br/>
        <?php 
        $last_paragraph=$post['Post']['body'];
        $length = strlen($last_paragraph);                  
        echo $this->Text->truncate($last_paragraph,150,array('ending' => '...','exact' => false));
        ?>
        <br/>
        <?php 
        if($length > 151){
            echo $this->Html->link('more', '/posts/view'.$post['Post']['id'],
                array('id'=>'id_anchor_more','class'=>'class_anchor_more')
            );
        }
        ?>
    </td>
    <td><?php echo $this->Html->link('Edit', '/posts/edit'.$post['Post']['id']);?></td>
    <td><?php echo $this->Html->link('Delete', '/posts/delete'.$post['Post']['id']);?></td>
</tr>

Я думаю, что было бы легче читать, написав это таким образом, и я проверил это на своем рабочем проекте cakePHP, заменив $post['Post']['body'] на некоторый текст с HTML-тегами, и он работает просто отлично, обратите внимание, что я не меняйте исходные коды, просто убирайте эхо.

Я подозреваю, что ваши $post['Post']['body'], вероятно, содержат что-то, что делает вашу ссылку простым текстом, попробуйте заключить ее в div или что-то еще

<div>
    <?php 
    echo $this->Text->truncate(
        $last_paragraph,
        150,
        array('ending' => '...', 'exact' => false)
    );?>
</div>
2 голосов
/ 05 октября 2011

Недопустимая структура HTML. Вам не хватает закрывающей </td> после ссылки.

По этой же причине рекомендуется использовать помощник HTML для создания таблиц : он исключает вероятность пропуска тегов по ошибке.

1 голос
/ 05 октября 2011

Попробуйте это

    echo '<tr class="class_row">';
    echo '<td>';

    echo $this->Html->link($post['Post']['title'],
                    array('controller'=>'posts','action'=>'view',$post['Post']['id']),
                    array('id'=>'id_anchor_title','class'=>'class_anchor_title') );
    echo '<h6><i>'.$this->Time->format('d-M-Y',strtotime($post['Post']['created'])).'</i></h6>';
    echo '<br/>';                           
    $last_paragraph=$post['Post']['body'];
    $length = strlen($last_paragraph);                  
    echo $this->Text->truncate($last_paragraph,150,array('ending' => '...','exact' => false));
    echo '</td>';

    if($length > 151){
        echo '<td>'.$this->Html->link('more',
                    array('controller'=>'posts','action'=>'view',$post['Post']['id']),
                    array('id'=>'id_anchor_more','class'=>'class_anchor_more') ).'</td>';
    }
                    echo '</td>';
    echo '<td>'.$this->Html->link('Edit',
                        array('controller'=>'posts','action'=>'edit',$post['Post']['id']) ).'</td>';
    echo '<td>'.$this->Html->link('Delete',
                        array('controller'=>'posts','action'=>'delete',$post['Post']['id'])).'</td>';
    echo '</tr>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...