2012-11-21 20 views
0

我开始与cakephp一起工作,我在构建以下方面遇到了一些问题: 我希望我的应用程序的主页有4个简单按钮,可以重定向到不同的创建视图。我怎样才能做到这一点?cakephp创建简单的按钮,重定向到视图

我尝试这样做:

<?php 
echo $this->Form->create('Post'); 
echo $this->Form->button('Redirect1', array('type'=>'button')); 
echo $this->Form->button('Redirect1', array('type'=>'button')); 
echo $this->Form->button('Redirect1', array('type'=>'button')); 
echo $this->Form->end(); 
?> 

,但我想是不需要提交表单吗?但是,我没有在我的搜索中找到其他方式。不可能只是改变按钮点击页面?

谢谢

回答

2

我想你只需要链接,你以后会用CSS样式(假设你正在使用的HTML帮助):

<?php 
echo $this->Html->link('Click Here', '/redirect/url', array('class' => 'button')); 
?> 

在这里阅读更多:http://book.cakephp.org/1.3/en/view/1442/link

+0

就是这样Nebojsac,但无法用来包围这个按钮?在这种格式与将是一个带有href的文本。 – user1511579

+0

史蒂夫回答说,我看到 –

+0

完美,谢谢:) – MoOoG

1

你可以使用

<?php echo $this->Html->link('ADD New One', '/controllername/functionname')?> 
0

下面的东西会适合你

$this->Form->button('Home', 
     array('onclick' => "location.href='".$this->Html->url($url)."'")); 
+0

贾斯汀,但现在我必须定义$ url参数下面的权利? – user1511579

+0

是的,你需要定义url。 –

8

表单按钮不应该被用来作为简单链接,反正你创建按钮,然后添加一些JavaScript或jQuery的做,你想要的贾斯汀说,它的工作。 (虽然我通常喜欢使用外部。js与代码文件)

另一种选择,将被添加的链接的风格这可能赋予它一个按钮的外观,例如:

echo $this->Html->link("Demo", array('controller' => 'yourcontroller','action'=> 'youraction', $possibleParameter), array('class' => 'button')) 

凡为按键可以定义为:

a.button { 
    color: #6e6e6e; 
    font: bold 12px Helvetica, Arial, sans-serif; 
    text-decoration: none; 
    padding: 7px 12px; 
    position: relative; 
    display: inline-block; 
    text-shadow: 0 1px 0 #fff; 
    -webkit-transition: border-color .218s; 
    -moz-transition: border .218s; 
    -o-transition: border-color .218s; 
    transition: border-color .218s; 
    background: #f3f3f3; 
    background: -webkit-gradient(linear,0% 40%,0% 70%,from(#F5F5F5),to(#F1F1F1)); 
    background: -moz-linear-gradient(linear,0% 40%,0% 70%,from(#F5F5F5),to(#F1F1F1)); 
    border: solid 1px #dcdcdc; 
    border-radius: 2px; 
    -webkit-border-radius: 2px; 
    -moz-border-radius: 2px; 
    margin-right: 20px; 
    cursor:pointer; 
} 
a.button:hover{ 
    color: #333; 
    border-color: #999; 
    -moz-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2); 
-webkit-box-shadow:0 2px 5px rgba(0, 0, 0, 0.2); 
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); 
} 
a.button:active { 
    color: #000; 
    border-color: #444; 
} 
+0

谢谢史蒂夫,请再问两个问题,因为我仍然有关于我使用的这个新框架的问题。 CSS代码,我应该把它放在哪里?在视图文件夹中的.css文件中? 关于您用作示例的“$ possibleParameter”,我仍然无法理解如何在link/url代码之外定义此参数。 bookcakephp中有一些例子,或者你可以给一个吗? 谢谢! – user1511579

+0

CSS文件位于'app \ webroot \ css'内部,详情请参阅:http://book.cakephp.org/2.0/en/getting-started/cakephp-folder-structure.html#the-app-folder 您可以使用Html助手在您的视图中包含它们: http://book.cakephp.org/2.0/en/views/helpers.html#using-helpers 无论如何,您始终可以添加他们直接在'default.ctp'布局的标题上使用''标签。 – Alvaro

5

我发现了这个问题,同时寻找类似的问题。在我看来,最简单的方法是:

$this->Html->link($this->Form->button('Button'), array('action' => 'viewSomethin',$id), array('escape'=>false,'title' => "Click to view somethin")); 

也许这对别人很有用。

0

我认为最好的办法是使用postButton如:

echo $this->Form->postButton('Text Button', array('controller'=>'controllername','action'=>'action_to_do')); 

你必须改变“controllername”和“action_to_do”你需要什么

0

我也只是在寻找这个“问题”。但我却高兴不起来与形式的按钮,我只是想获得按钮像操作类:enter image description here

所以我发现我2个解决方案:

解决方案1:裹在按钮用CSS类“动作”

<span class="action"> 
    <?php 
    echo $this->Html->link("Send Again", "url"); 
    ?> 
</span> 

的CSS类action跨度已经意味着在cake.generic样式表。所以这将是一个很好的按钮。

解决方案2:复制的CSS样式.actions a

该解决方案是以上的除Alvaro's one。我还不能评论,所以我必须为此做一个额外的答案。

所以,我没有使用Alvaro的css,因为它们是表单按钮,与原来的略有不同。所以我只是在cake.generic.css中搜索.action a的样式,并将它们复制到我自己的css文件中,并将选择器更改为a.button

那么现在你可以使用这个没有任何包装生成按钮:

<?php echo $this->Html->link("Send Again, "url", ["class" => "button"]) ?> 

CSS的CakePHP的版本2.6.2

a.button { 
    font-weight: normal; 
    padding: 4px 8px; 
    background: #dcdcdc; 
    background-image: -webkit-gradient(linear, left top, left bottom, from(#fefefe), to(#dcdcdc)); 
    background-image: -webkit-linear-gradient(top, #fefefe, #dcdcdc); 
    background-image: -moz-linear-gradient(top, #fefefe, #dcdcdc); 
    background-image: -ms-linear-gradient(top, #fefefe, #dcdcdc); 
    background-image: -o-linear-gradient(top, #fefefe, #dcdcdc); 
    background-image: linear-gradient(top, #fefefe, #dcdcdc); 
    color: #333; 
    border: 1px solid #bbb; 
    -webkit-border-radius: 4px; 
    -moz-border-radius: 4px; 
    border-radius: 4px; 
    text-decoration: none; 
    text-shadow: #fff 0px 1px 0px; 
    min-width: 0; 
    -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2); 
    -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2); 
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2); 
    -webkit-user-select: none; 
    user-select: none; 
} 

a.button:hover { 
    background: #ededed; 
    border-color: #acacac; 
    text-decoration: none; 
} 

a.button:active { 
    background: #eee; 
    background-image: -webkit-gradient(linear, left top, left bottom, from(#dfdfdf), to(#eee)); 
    background-image: -webkit-linear-gradient(top, #dfdfdf, #eee); 
    background-image: -moz-linear-gradient(top, #dfdfdf, #eee); 
    background-image: -ms-linear-gradient(top, #dfdfdf, #eee); 
    background-image: -o-linear-gradient(top, #dfdfdf, #eee); 
    background-image: linear-gradient(top, #dfdfdf, #eee); 
    text-shadow: #eee 0px 1px 0px; 
    -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); 
    -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); 
    box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); 
    border-color: #aaa; 
    text-decoration: none; 
} 

希望这将有助于家伙问题提出后三年。 :D

1

您可以将Html规则属性添加到您的链接。该规则将链接设置为按钮。

echo $this->Html->link('Blogs', 
    array('action' => 'add'), 
    array(
     'bootstrap-type' => 'primary', 
     'class' => 'btn btn-lg btn-primary btn-block', 
     // transform link to a button 
     'rule' => 'button' 
    ) 
); 
0

对于CakePHP的2.X

<button id="create_task_groups" onclick="window.location.href='<?php echo $this->Html>url(array('plugin'=>'task_calendar', 'controller'=>'task_groups', 'action'=>'add'))?>'"> Create Task Group</button>