2016-10-19 8 views
1

私は宣言しようとしていますが、php部分のコードセクションで関数を呼び出していますが、10月はそれを見ません。ここで は、コードは次のようになります。コードセクションでカスタム関数を宣言できますか?

function onStart() { 
    return sayHi(); 
} 

function sayHi() { 
    return 'Hi'; 
} 

あなたはこのことについて間違っているものを私に教えてくださいますか? ここで唯一許可されている機能は、ページのライフサイクルに関連するものですか? (ONSTART()、onEnd()、のOnInit()、onRun()...など)

+0

このhttps://octobercms.com/docs/cms/partialsを終了しましたか? –

答えて

2

実際のエラーメッセージが含まれている場合は、このような質問を含めることで、人々が間違った方向に激しく推測し始めることがない場合があります。そして、この場合には、実際のようなエラーメッセージが表示される必要があります。

ERROR: Call to undefined function sayHi()

ここで、このエラーの原因は、テンプレートのコードセクション内の関数は、グローバルスコープで定義されていないということですが、いくつかのオブジェクトのメソッドとして。したがって、互いに参照するには、セクション内の各クロス関数呼び出しの前に、$this->を付けて、グローバル関数ではなく現在のオブジェクトのメソッドを呼び出すことを指定する必要があります。

function onStart() { 
    return $this->sayHi(); 
} 

にごònStart()機能を変更する

はそれを動作させる必要があります。

しかし、あなたはそのリターンステートメントで達成したいことについて考えることができます。 10月のonStart()およびその他のライフサイクル関数の設計方法は、通常、return文は想定されていません。しかし、それが存在する場合、その時点でページ実行サイクルは停止され、戻り値は単にブラウザに返されます。

あなたは、単にページ上(および他のすべての前に)「こんにちは」というメッセージを表示したい場合、あなたはおそらく、より良い、このようにそれを行うことができます:

まだページ・レンダリング・サイクルとなるようその後も続く。しかし、は、すべての前に出ているので、以外(すなわち、開封前の<html>タグ、またはそれが上に来るもの)であるため、これは実際には役に立たないでしょう。

私はあなたが実際に機能テストの目的以外にこの方法を使用したくないと思っていますが、とにかく説明するのは良いかもしれないと思うので、人々は実際に何が起きるか考えてみましょう。 ;)

(関連ノートで、ここsending a custom response in OctoberCMSのための適切な使用法に関するいくつかのドキュメントがある)


(あなたがOctoberCMS専用のstackechangeコミュニティを持っているしたい場合は、pleseはサポートしています。 octobercms.stackexchange proposal。この目標が達成されたら、私はこのメッセージを削除します - 約束:))

+0

ありがとう、私を救ったトロールコッツ! はい、私は機能が欲しかった: – Dia

+0

私に知らせてくれてありがとう。これで問題が解決した場合は、[回答を受け入れる]ことができれば感謝します(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。このように私はより多くの評判を得て、人々はこの問題が解決されたことを直ちに見ることができます。 – trollkotze

+0

また、まだ行っていない場合は、[こちらの専用のOctoberCMSスタックエクスチェンジセクションの提案](http://area51.stackexchange.com/proposals/97119/octobercms?referrer=gRoetJyisyYjkvxz3ZCKeA2)をサポートしてください。これをサポートするユーザーが200人以上になるとすぐに、そして他の場所で十分な評判を得たユーザーがいる場合は、その提案が承認されます。 あなたのご協力のおかげで、この大きなスタックエクスチェンジプラットフォームでOctoberCMSのQ&Aナレッジベースを構築するための、より良い集中化された場所を得ることができます。 :) – trollkotze

0

試してみてください。

function sayHi() { 
    return 'Hi'; 
    } 

function onStart() { 
    return sayHi(); 
    } 

他の実行がreturn sayHi();に達したときに、それが機能sayHi()を知ることができません賢明。いくつかの場合literature about it...

+0

私はそれを試して、うまくいきませんでした。 – Dia

+0

関数が別のコードを認識しない唯一の理由は、コードが宣言され、コード内のどこからコードが呼び出されていないかという唯一の理由です。コードがどのように整理され、 "コンパイルされました" ... –

関連する問題