【问题标题】:PHP,CakePHP,HTML: The anchor tag is appended inside a code tag, how can seperate this anchor tag?PHP,CakePHP,HTML:锚标签是附加在代码标签里面的,这个锚标签怎么分开?
【发布时间】:2011-10-05 06:00:40
【问题描述】:
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>';

当我发布内容时,“更多”链接/锚点作为帖子的内容/正文附加。

我怎样才能休息/休息并停止“更多”成为身体的一个元素?

我得到以下行作为帖子的内容或正文,但它将是一个单独的链接。

<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>

谁能帮我解决这个问题?

不可能在同一列&lt;td&gt; 中有正文和“更多”,问题是我正在使用语法高亮器http://alexgorbatchev.com/SyntaxHighlighter/,当我在标签&lt;pre class="brush: cpp"&gt; ...body.. &lt;/pre&gt; 中放入一些代码时,就会出现问题。

【问题讨论】:

  • 找不到你。您能否发布您当前的输出和所需的输出。
  • 当前输出是这个 => mysqldump -u root --password=mypassword databasename > backupfile.sql mysqldump -u root --password=mypassword... 更多 编辑 删除 但我希望“更多”、“编辑”、“删除”作为链接/锚点而不是帖子的内容。
  • 我的 cakePHP 中的这段代码运行良好
  • id_anchor_more 应该是唯一的;你在重复它。考虑 id_anchor_more_&lt;?php echo $post['Post']['id']; ?&gt; 的唯一 ID(如果这是在一个循环中;无论如何它至少重复一次。)
  • 是的,它在 foreach 循环中。那么这有什么问题呢?

标签: php html cakephp html-table


【解决方案1】:
<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 项目上测试了这个,用一些带有 html 标签的文本替换 $post['Post']['body'],它工作得很好,请注意我不要更改您的原始代码,只需删除回声。

我怀疑您的 $post['Post']['body'] 可能包含使您的链接成为纯文本的内容,请尝试用 div 或其他内容将其括起来

<div>
    <?php 
    echo $this->Text->truncate(
        $last_paragraph,
        150,
        array('ending' => '...', 'exact' => false)
    );?>
</div>

【讨论】:

  • 问题是在发布我所做的任何代码时
     ..Code.. 
    所以额外的
    ..
    标签是随帖子添加。这个我用过,alexgorbatchev.com/SyntaxHighlighter这里的css和javascript可能和现有的有冲突。
  • 我必须将所有 echo 'body'/message 放在
    ..
    中,这样就解决了。
【解决方案2】:

HTML 结构无效。您在链接后缺少关闭 &lt;/td&gt;

这也是为什么使用the HTML helper to create tables 是个好主意的原因:它消除了错误丢失标签的机会。

【讨论】:

  • 但是放错地方了。 (一个单元格中有两个单元格。)查看生成的 HTML 并通过验证器运行它。
  • 我还注意到您编辑了问题以添加缺少的标签——您确定它在您的实际代码中吗?
  • 不可能在同一列 '' 中有正文和 'more' ="brush: cpp"> ...body.. 那么问题就出现了。
【解决方案3】:

试试这个

    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>';

【讨论】:

  • 然后 'more' 创建一个新列 '' 。不可能在同一列“ ”中包含正文和“更多”,问题是我正在使用 syntaxhighlighter alexgorbatchev.com/SyntaxHighlighter,当我将一些代码放入标签
     时。 ..body.. 
    那么问题就出现了。
  • @guru 能否让我们访问(链接)到您的页面,以便我们自己查看问题。
猜你喜欢
相关资源
最近更新 更多
热门标签