2012-11-21 18 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>