YiiFrameworkの入門知識のまとめ
この記事では、YiiFrameworkを始めるための知識を中心に、YiiFrameworkの具体的な作成手順や使用上の注意点などを画像と文章でまとめて解説していますので、困っている方は参考にしてください
この記事では、YiiFramework の導入に関するナレッジポイントをまとめています。参照用にみんなと共有します。詳細は次のとおりです:
Yii アプリケーション スケルトンの作成
web は Web サイトのルート ディレクトリです
yiic webapp / web/demo
GII
1 でモデルと CURD を作成する場合は注意が必要です。
テーブルがある場合でも。プレフィックスの場合、テーブルにはテーブル名を入力する必要があります。テーブルのプレフィックスを含む完全な名前。以下に示すように:
#2. Crud Generator の操作
このインターフェイスで、モデル クラスにモデル名を入力します。最初の文字を大文字にします。モデルを生成するときに、proctected/models ディレクトリ内のモデル ジェネレーターによって生成されたファイル名を参照することもできます。以下に示すように:
news、newstype、statustype の 3 つのテーブルの CURD コントローラーを生成する場合、モデル ジェネレーターで「News、newsType、StatusType」と入力します。大文字と小文字は作成されたファイル名と同じです。 NEWSやニュースと書かれている場合はNGです。
モジュール作成に関する注意事項
GII を通じてモジュールを作成する場合、モジュール ID は通常小文字です。いずれの場合も、ここに入力された ID によって main.php 構成ファイル内の構成が決まります。次のように:
'modules'=>array( 'admin'=>array(//这行的admin为Module ID。与创建Module时填写的Module ID大写写一致 'class'=>'application.modules.admin.AdminModule',//这里的admin在windows os中大小写无所谓,但最好与实际目录一致。 ), ),
routing
system は、yii フレームワークのフレームワーク ディレクトリを表します。
application は、作成されたアプリケーションの下の保護されたディレクトリ (d:\ など) を表します。 wwwroot\blog) 。
application.modules.Admin.AdminModule
は、アプリケーション ディレクトリの下の modules ディレクトリの下の Admin ディレクトリにある AdminModules.php ファイルを表します (例: d:\wwwroot\blog\protected) (実際にはクラスを指します)ファイルの名前)
system.db.*
は、YII フレームワークのフレームワーク ディレクトリ内の db ディレクトリ内のすべてのファイルを表します。
コントローラーの accessRules の説明
/** * Specifies the access control rules. * This method is used by the 'accessControl' filter. * @return array access control rules */ public function accessRules() { return array( array('allow', // allow all users to perform 'index' and 'view' actions 'actions'=>array('index','view'),//表示任意用户可访问index、view方法 'users'=>array('*'),//表示任意用户 ), array('allow', // allow authenticated user to perform 'create' and 'update' actions 'actions'=>array('create','update'),//表示只有认证用户才可操作create、update方法 'users'=>array('@'),//表示认证用户 ), array('allow', // allow admin user to perform 'admin' and 'delete' actions 'actions'=>array('admin','delete'),//表示只有用户admin才能访问admin、delete方法 'users'=>array('admin'),//表示指定用户,这里指用户:admin ), array('deny', // deny all users 'users'=>array('*'), ), ); }
上記のコード コメントを参照してください。
user: ユーザー セッション情報を表します。詳細については、「API: CWebUser」を参照してください。
CWebUser は、Web アプリケーションの永続的な状態を表します。
CWebUser は、ID user を持つアプリケーション コンポーネントとして使用されます。したがって、ユーザー ステータスには、Yii::app()->user
public function beforeSave() { if(parent::beforeSave()) { if($this->isNewRecord) { $this->password=md5($this->password); $this->create_user_id=Yii::app()->user->id;//一开始这样写,User::model()->user->id;(错误) //$this->user->id;(错误) $this->create_time=date('Y-m-d H:i:s'); } else { $this->update_user_id=Yii::app()->user->id; $this->update_time=date('Y-m-d H:i:s'); } return true; } else { return false; } }
getter メソッドまたは/および setter メソッド ## を介してどこからでもアクセスできます。 #
<?php /** * UserIdentity represents the data needed to identity a user. * It contains the authentication method that checks if the provided * data can identity the user. */ class UserIdentity extends CUserIdentity { /** * Authenticates a user. * The example implementation makes sure if the username and password * are both 'demo'. * In practical applications, this should be changed to authenticate * against some persistent user identity storage (e.g. database). * @return boolean whether authentication succeeds. */ private $_id; public function authenticate() { $username=strtolower($this->username); $user=User::model()->find('LOWER(username)=?',array($username)); if($user===null) { $this->errorCode=self::ERROR_USERNAME_INVALID; } else { //if(!User::model()->validatePassword($this->password)) if(!$user->validatePassword($this->password)) { $this->errorCode=self::ERROR_PASSWORD_INVALID; } else { $this->_id=$user->id; $this->username=$user->username; $this->errorCode=self::ERROR_NONE; } } return $this->errorCode===self::ERROR_NONE; } public function getId() { return $this->_id; } }
public function beforeSave() { if(parent::beforeSave()) { if($this->isNewRecord) { $this->password=md5($this->password); $this->create_user_id=Yii::app()->user->id;//====主要为此句。得到登陆帐号的ID $this->create_time=date('Y-m-d H:i:s'); } else { $this->update_user_id=Yii::app()->user->id; $this->update_time=date('Y-m-d H:i:s'); } return true; } else { return false; } }
/* 由于CComponent是post最顶级父类,所以添加getUrl方法。。。。如下说明: CComponent 是所有组件类的基类。 CComponent 实现了定义、使用属性和事件的协议。 属性是通过getter方法或/和setter方法定义。访问属性就像访问普通的对象变量。读取或写入属性将调用应相的getter或setter方法 例如: $a=$component->text; // equivalent to $a=$component->getText(); $component->text='abc'; // equivalent to $component->setText('abc'); getter和setter方法的格式如下 // getter, defines a readable property 'text' public function getText() { ... } // setter, defines a writable property 'text' with $value to be set to the property public function setText($value) { ... } */ public function getUrl() { return Yii::app()->createUrl('post/view',array( 'id'=>$this->id, 'title'=>$this->title, )); }
モデルのルール メソッド
/* * rules方法:指定对模型属性的验证规则 * 模型实例调用validate或save方法时逐一执行 * 验证的必须是用户输入的属性。像id,作者id等通过代码或数据库设定的不用出现在rules中。 */ /** * @return array validation rules for model attributes. */ public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array('news_title, news_content', 'required'), array('news_title', 'length', 'max'=>128), array('news_content', 'length', 'max'=>8000), array('author_name, type_id, status_id,create_time, update_time, create_user_id, update_user_id', 'safe'), // The following rule is used by search(). // Please remove those attributes that should not be searched. array('id, news_title, news_content, author_name, type_id, status_id, create_time, update_time, create_user_id, update_user_id', 'safe', 'on'=>'search'), ); }
2. データベース内の操作フィールド (作成時間、更新時間、その他のフィールドなど、システムによって生成されたものであっても、boyLee が提供する yii_computer ソース コードでは、システムによって生成されたこれらの属性は配置されません)安全です。以下のコードを参照してください。
フォームで提供されていないデータについては、ルール メソッドで検証されていない限り、セーフに追加する必要があります。追加しないとデータベースに書き込むことができません。
/** * @return array validation rules for model attributes. */ public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array('news_title, news_content', 'required'), array('news_title', 'length', 'max'=>128, 'encoding'=>'utf-8'), array('news_content', 'length', 'max'=>8000, 'encoding'=>'utf-8'), array('author_name', 'length', 'max'=>10, 'encoding'=>'utf-8'), array('status_id, type_id', 'safe'), // The following rule is used by search(). // Please remove those attributes that should not be searched. array('id, news_title, news_content, author_name, type_id, status_id', 'safe', 'on'=>'search'), ); }
ビューに動的コンテンツを表示する 3 つの方法
1. ビュー ファイルに直接表示します。 PHPコードの実装を使用します。たとえば、ビューに現在時刻を表示するには:<?php echo date("Y-m-d H:i:s");?>
$theTime=date("Y-m-d H:i:s"); $this->render('helloWorld',array('time'=>$theTime));
<?php echo $time;?>
ビューの命名規則
ビューのファイル名は、ActionID と同じである必要があります。ただし、これは推奨される命名規則にすぎないことに注意してください。実際、ビュー ファイル名は ActionID と同じである必要はありません。ファイル名を最初のパラメータとして render() に渡すだけです。DB 関連
$Prerfp = Prerfp::model()->findAll( array( 'limit'=>'5', 'order'=>'releasetime desc' ) );
$model = Finishrfp::model()->findAll( array( 'select' => 'companyname,title,releasetime', 'order'=>'releasetime desc', 'limit' => 10 ) ); foreach($model as $val){ $noticeArr[] = " 在".$val->title."竞标中,".$val->companyname."中标。"; }
$model = Cgnotice::model()->findAll ( array( 'select' => 'status,content,updatetime', 'condition'=> 'status = :status ', 'params' => array(':status'=>0), 'order'=>'updatetime desc', 'limit' => 10 ) ); foreach($model as $val){ $noticeArr[] = $val->content; }
$user=User::model()->find('LOWER(username)=?',array($username));
$noticetype = Dictionary::model()->find(array( 'condition' => '`type` = "noticetype"') );
// 查找postID=10 的那一行 $post=Post::model()->find('postID=:postID', array(':postID'=>10));
$criteria=new CDbCriteria; $criteria->select='title'; // 只选择'title' 列 $criteria->condition='postID=:postID'; $criteria->params=array(':postID'=>10); $post=Post::model()->find($criteria); // $params 不需要了
一种替代CDbCriteria 的方法是给find 方法传递一个数组。数组的键和值各自对应标准(criterion)的属性名和值,上面的例子可以重写为如下:
$post=Post::model()->find(array( 'select'=>'title', 'condition'=>'postID=:postID', 'params'=>array(':postID'=>10), ));
其它
1、链接
<span class="tt"><?php echo CHtml::link(Controller::utf8_substr($val->title,0,26),array('prerfp/details','id'=>$val->rfpid),array('target'=>'_blank'));?></a> </span>
具体查找API文档:CHtml的link()方法
<span class="tt"><a target="_blank" title="<?php echo $val->title;?>" href="<?php echo $this->createUrl('prerfp/details',array('id'=>$val->rfpid)) ;?>" ><?php echo Controller::utf8_substr($val->title,0,26); ?></a> </span>
具体请查找API文档:CController的createUrl()方法
以上两个连接效果等同
组件包含
一个示例:
在视图中底部有如下代码:
<?php $this->widget ( 'Notice' ); ?>
打开protected/components下的Notice.php文件,内容如下:
<?php Yii::import('zii.widgets.CPortlet'); class Banner extends CPortlet { protected function renderContent() { $this->render('banner'); } }
渲染的视图banner,是在protected/components/views目录下。
具体查看API,关键字:CPortlet
获取当前host
Yii::app()->request->getServerName(); //and $_SERVER['HTTP_HOST']; $url = 'http://'.Yii::app()->request->getServerName(); $url .= CController::createUrl('user/activateEmail', array('emailActivationKey'=>$activationKey)); echo $url;
关于在发布新闻时添加ckeditor扩展中遇到的情况
$this->widget('application.extensions.editor.CKkceditor',array( "model"=>$model, # Data-Model "attribute"=>'news_content', # Attribute in the Data-Model "height"=>'300px', "width"=>'80%', "filespath"=>Yii::app()->basePath."/../up/", "filesurl"=>Yii::app()->baseUrl."/up/", );
echo Yii::app()->basePath
如果项目目录在:d:\wwwroot\blog目录下。则上面的值为d:\wwwroot\blog\protected。注意路径最后没有返斜杠。
echo Yii::app()->baseUrl;
如果项目目录在:d:\wwwroot\blog目录下。则上面的值为/blog。注意路径最后没有返斜杠。
(d:\wwwroot为网站根目录),注意上面两个区别。一个是basePath,一个是baseUrl
其它(不一定正确)
在一个控制器A对应的A视图中,调用B模型中的方法,采用:B::model()->B模型中的方法名();
前期需要掌握的一些API
CHtml
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
关于Yii
Framework框架获取分类下面的所有子类的方法
以上がYiiFrameworkの入門知識のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









拡散はより良いものを模倣するだけでなく、「創造」することもできます。拡散モデル(DiffusionModel)は、画像生成モデルである。 AI 分野でよく知られている GAN や VAE などのアルゴリズムと比較すると、拡散モデルは異なるアプローチを採用しており、その主な考え方は、最初に画像にノイズを追加し、その後徐々にノイズを除去するプロセスです。ノイズを除去して元の画像を復元する方法は、アルゴリズムの中核部分です。最後のアルゴリズムは、ランダムなノイズを含む画像から画像を生成できます。近年、生成 AI の驚異的な成長により、テキストから画像への生成、ビデオ生成など、多くのエキサイティングなアプリケーションが可能になりました。これらの生成ツールの背後にある基本原理は、以前の方法の制限を克服する特別なサンプリング メカニズムである拡散の概念です。

キミ: たった 1 文の PPT がわずか 10 秒で完成します。 PPTはとても面倒です!会議を開催するには PPT が必要であり、週次報告書を作成するには PPT が必要であり、投資を勧誘するには PPT を提示する必要があり、不正行為を告発するには PPT を送信する必要があります。大学は、PPT 専攻を勉強するようなものです。授業中に PPT を見て、授業後に PPT を行います。おそらく、デニス オースティンが 37 年前に PPT を発明したとき、PPT がこれほど普及する日が来るとは予想していなかったでしょう。 PPT 作成の大変な経験を話すと涙が出ます。 「20 ページを超える PPT を作成するのに 3 か月かかり、何十回も修正しました。PPT を見ると吐きそうになりました。」 「ピーク時には 1 日に 5 枚の PPT を作成し、息をすることさえありました。」 PPTでした。」 即席の会議をするなら、そうすべきです

北京時間6月20日早朝、シアトルで開催されている最高の国際コンピュータビジョンカンファレンス「CVPR2024」が、最優秀論文やその他の賞を正式に発表した。今年は、最優秀論文 2 件と学生優秀論文 2 件を含む合計 10 件の論文が賞を受賞しました。また、最優秀論文ノミネートも 2 件、学生優秀論文ノミネートも 4 件ありました。コンピュータービジョン (CV) 分野のトップカンファレンスは CVPR で、毎年多数の研究機関や大学が集まります。統計によると、今年は合計 11,532 件の論文が投稿され、2,719 件が採択され、採択率は 23.6% でした。ジョージア工科大学による CVPR2024 データの統計分析によると、研究テーマの観点から最も論文数が多いのは画像とビデオの合成と生成です (Imageandvideosyn

LLM が大量のデータを使用して大規模なコンピューター クラスターでトレーニングされていることはわかっています。このサイトでは、LLM トレーニング プロセスを支援および改善するために使用される多くの方法とテクノロジが紹介されています。今日、私たちが共有したいのは、基礎となるテクノロジーを深く掘り下げ、オペレーティング システムさえ持たない大量の「ベア メタル」を LLM のトレーニング用のコンピューター クラスターに変える方法を紹介する記事です。この記事は、機械がどのように考えるかを理解することで一般的な知能の実現に努めている AI スタートアップ企業 Imbue によるものです。もちろん、オペレーティング システムを持たない大量の「ベア メタル」を LLM をトレーニングするためのコンピューター クラスターに変換することは、探索と試行錯誤に満ちた簡単なプロセスではありませんが、Imbue は最終的に 700 億のパラメータを備えた LLM のトレーニングに成功しました。プロセスが蓄積する

C言語は広く使われているプログラミング言語であり、コンピュータプログラミングを志す人にとって必ず学ばなければならない基本的な言語の一つです。ただし、初心者にとって、特に関連する学習ツールや教材が不足しているため、新しいプログラミング言語を学習するのは難しい場合があります。この記事では、C言語初心者がすぐに始められるプログラミングソフトを5つ紹介します。最初のプログラミング ソフトウェアは Code::Blocks でした。 Code::Blocks は、無料のオープンソース統合開発環境 (IDE) です。

PyCharm コミュニティ版のクイック スタート: 詳細なインストール チュートリアル 完全な分析 はじめに: PyCharm は、開発者が Python コードをより効率的に作成できるようにする包括的なツール セットを提供する強力な Python 統合開発環境 (IDE) です。この記事では、PyCharm Community Edition のインストール方法を詳しく紹介し、初心者がすぐに使い始めるのに役立つ具体的なコード例を示します。ステップ 1: PyCharm Community Edition をダウンロードしてインストールする PyCharm を使用するには、まず公式 Web サイトからダウンロードする必要があります

Machine Power Report 編集者: Yang Wen 大型モデルや AIGC に代表される人工知能の波は、私たちの生活や働き方を静かに変えていますが、ほとんどの人はまだその使い方を知りません。そこで、直感的で興味深く、簡潔な人工知能のユースケースを通じてAIの活用方法を詳しく紹介し、皆様の思考を刺激するコラム「AI in Use」を立ち上げました。また、読者が革新的な実践的な使用例を提出することも歓迎します。ビデオリンク: https://mp.weixin.qq.com/s/2hX_i7li3RqdE4u016yGhQ 最近、Xiaohongshu で一人暮らしの女の子の生活 vlog が人気になりました。イラスト風のアニメーションといくつかの癒しの言葉を組み合わせれば、数日で簡単に習得できます。

タイトル: 技術初心者必読: 具体的なコード例を必要とする C 言語と Python の難易度分析 今日のデジタル時代において、プログラミング技術はますます重要な能力となっています。ソフトウェア開発、データ分析、人工知能などの分野で働きたい場合でも、単に興味があってプログラミングを学びたい場合でも、適切なプログラミング言語を選択することが最初のステップです。数あるプログラミング言語の中でも、C言語とPythonは広く使われているプログラミング言語であり、それぞれに独自の特徴があります。この記事ではC言語とPythonの難易度を分析します。
