1

現在のページからコントローラーに URL を渡そうとしましたが、完全な URL が表示されません。

EX、http://xxxxxx.localhost/cards/card_list/page:2コントローラーでエコーすると、表示されますxxxxxx.localhost("/" ":" )...などの特殊文字で知っていました。

私のプロジェクトの目的は、コントローラーが作業を完了した後、フォームを含む URL をコントローラーに渡すことです。現在のページにリダイレクトします。

card_list (ビュー)

<?php echo $url5 = urlencode(Router::url($this->here, true)); ?>
<?php echo $form->create('CardSaleAll', array('url'=> array('controller' => 'cards', 'action' => 'complete_sale_card', $url5)));?>
<input type="hidden" name="data[CardSaleAll][sale_card_id]" value="'+id+'"> 
<?php echo $form->submit('Submit', array('alt' => '売却','type' => 'image', 'src' => '../../img/btn_52.png', 'style' => 'width: 307px;'));?>

カード (コントローラー) => complete_sale_all (アクション)

function complete_sale_card($url5){
    echo $url5;
    exit();
}
4

2 に答える 2

1

以下を試してください

$this->request->url

上記には、ビューの現在のリクエストの一部として URL が含まれている必要があります。

于 2013-07-05T07:28:43.917 に答える
0

貪欲なスター ルートを使用する

通常、スラッシュはパラメーター区切り文字を示します。

つまり、url/controller/action/one/two/three/fourは次の変数にマップされます。

function action ($one, $two, $three, $four) {
}

$one(上の例で) アクション名に続くすべてを含めたい場合は、 greedy-starルートを使用できます。

Router::connect(
    '/anything/**',
    array('controller' => 'cards', 'action' => 'complete_sale_card')
);

または人生をシンプルにする

URL に URL を入れる代わりに、単にフォーム フィールドにすることができます。

<?php 
echo $form->create('CardSaleAll', array(
    'action' => 'complete_sale_card'
));
echo $form->input('redirect', array(
    'type'=> 'hidden',
    'value' => $url5
));
?>

生の HTML とフォーム ヘルパーを混在させないでください

質問には、次のスニペットがあります。

<input type="hidden" name="data[CardSaleAll][sale_card_id]" value="'+id+'"> 

エラーであるだけでなく (id実際に定数でない限り)、cake に入力を生成させる代わりに手動で入力を記述するのは悪い考えです。無効なマークアップを生成したり、インジェクション攻撃を許可したりするのは非常に簡単だからです。代わりに次のように置き換えます。

echo $this->Form->input('sale_card_id', array('type' => 'hidden'));

または類似。

相対 URL を使用しない

質問にはこれもあります:

'src' => '../../img/btn_52.png', 'style' => 'width: 307px;'

それも悪い考えです。

これは、URL に対しては機能しhttp://xxxxxx.localhost/cards/card_list/(私が推測します)、URL に対しては失敗しますhttp://xxxxxx.localhost/cards/card_list(末尾のスラッシュはありません)。

その代わり:

  1. 必要に応じて css を使用してください - これは適切な場所の例です
  2. ソース コードに URL を挿入したい場合は、 を使用Router::url()して正しい絶対URL を生成します。
于 2013-07-05T08:26:15.070 に答える