0

私はこのような機能を持っています:

func_seo.php

<?php
function seo_title($s) {
    $c = array (' ');
    $d = array ('-','/','\\',',','.','#',':',';','\'','"','[',']','{','}',')','(','|','`','~','!','@','%','$','^','&','*','=','?','+');

    $s = str_replace($d, '', $s); 

    $s = strtolower(str_replace($c, '-', $s)); 
return $s;

}
?>

App::Modelで関数を使いたいです。

私はこのように作成しますが、うまくいきません:

<?php
class MyModel extends AppModel{
    var $name = 'MyModel';
    public function beforeSave(){
        $this->element('func_seo'); //Function Element View/Elements/func_seo.php
        $this->data['MyModel']['name_seo'] = seo_title($this->data['MyModel']['tutorial_name']);
        return true; 
    }
}
?>
4

4 に答える 4

1

このコードは、出力をフォーマットするときにヘルパーに入る必要があります。これにより、プロジェクト間でコードを簡単に再利用できるようになります。Utils プラグインのようなものに入れて、アプリ間で git サブモジュールとして共有するのが最善です。

変更されたデータを DB に永続的に保存する場合は、代わりにそれを動作にします。

間違っているモデルで要素をレンダリングしようとすると、 MVC パターンに違反するため、コード例は間違っています。

変数の命名が不適切です。$a + $b = $c. ねぇ、これで日付を計算するつもりだったって知ってた?いいえ、変数には常に意味のある名前を付けてください。コーディング規約を確認し、それに従ってください。きれいなコードも読みやすいです。

また、スコープ キーワードにも注意してください。var と public / protected / private を混在させないでください。意味がわからない場合は、このページを確認してください。

于 2013-08-27T09:25:42.783 に答える
0

このように独自の関数を使用するためのベスト プラクティスが何かはわかりませんが、実際には からのものを Behavior に入れて、func_seo.phpすべてモデルが のように使用できるようにし$this->seoTitle()ます。

また、このような汎用関数をアプリに含めることは、設計上の誤りである可能性もあります。

于 2013-08-27T06:17:02.227 に答える