1

AppController で:

function beforeFilter() {

    $company = 'name of Company';

    $this->set(compact('company'));

}

コントローラ クラス:

function companyinfo() {
    $logo = '<div><?php $this->Html->image('logo'); ?></div>';
    $welcome = 'welcome to $$company!';

    $this->set(compact('logo','welcome'));
}

function beforeFilter() {
    parent::beforeFilter();
}

ビュークラスで:

<html>
    <body>
        <?php echo $logo; ?>
        <?php echo $welcome; ?>
    </body>
</html>

コントローラーを介してAppControllerから変数を渡した後、ビューで変数に応答しません..

4

2 に答える 2

2

1) を使用する場合$this->set(compact('company'));、コントローラーで使用する変数を設定するのではなく$company、ビューに渡します。

2) ヘルパー (ビューでのみ使用可能) を使用して、PHP コードを文字列に記述しようとしています。

$logo = '<div><?php $this->Html->image('logo'); ?></div>';

3) AppController から Controller、そして View にデータを渡したいというのは珍しいことです。

おそらくやりたいことは、次のようなものです。

//App Controller 
function beforeFilter() {
    $company = 'name of Company';
    $this->set(compact('company'));
}

//Controller
function companyinfo() {
    $logo = 'logo';
    $this->set(compact('logo'));
}

//Layout file (or view file, but I assume it's layout since you're getting data in the AppController)
<?php
echo '<div>' . $this->Html->image($logo) . '</div>';
echo "Welcome to " . $company;

これは、可能な限り最も建設的な方法で意味します (私たちは皆そこにいます)。一般的な PHP の概念に苦労しているようです。CakePHP に深く入り込む前に、一般的な PHP で長いチュートリアルをいくつか試してみることをお勧めします。完全に慣れたら、CakePHP に飛び込んでください。

于 2012-07-09T13:36:03.630 に答える
0

会社をビューに入れるには、サイト全体のすべてのビューで使用できるようにする場合は appcontroller で設定できます。内部で設定した関数のビューでのみ使用できるようにする場合は、特定のコントローラー内で使用できます。いずれにせよ、 set 関数を正しく使用する必要があります。例えば:

$this->set('company', 'Name of Company');

また

$company = 'Name of Company';
$this->set('company', $company);

$companyその後、ビュー内の変数にアクセスできるようになります。

echo $company;出力Name of Company

デイブへの質問について:

<?php $welcome = 'Welcome to $$company'; ?> <html><body><?php echo $welcome; ?></body></html>

次のように記述されます。

<html><body><?php echo "Welcome to ". $company; ?></body></html>

ただし、ビューファイルごとにタグを付ける必要がないように、cakephp でレイアウトを使用することを検討する必要があります。<html>, <head>, <body>, etc.

于 2012-07-09T21:16:07.643 に答える