国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) php教程 PHP開發(fā)框架Yii Framework教程(8) 使用FormModel

PHP開發(fā)框架Yii Framework教程(8) 使用FormModel

Jan 21, 2017 am 09:54 AM

通過前面的學習,我們了解了Yii Web應用的基本組成部分,也會編寫像Hangman猜單詞游戲這樣簡單的應用。在第一個例子 Yii Framework 開發(fā)簡明教程(1) 第一個應用Hello World 我們介紹了Yii Web應用采用MVC模型,也說明了本教程目的是通過不 同的視角(主要是通過開發(fā)Windows應用C++,C#程序員的角度)幫助Windows桌面應用或ASP.Net程序員較快的掌握PHP?Yii Framework應用程序框架。

前面我們介紹了通過CHtml創(chuàng)建View(頁面視圖Form),通過CController來處理用戶提交事件 ,和Windows 桌面應用或ASP.Net做個類比, Yii 中視圖View (HTML Form) 類似于WinForm或是Asp.Net 的Page。 控制類 Controller類似Windows桌面應用或Asp.Net的事件處理(Code-Behind)類。不同的是Asp.Net和Windows 桌面應用可以為UI中各 個UI組件,比如文本框,按鈕定義Id,然后為不同的UI組件添加事件處理。PHP應用或是Yii應用沒有對應的機制可以為定義在 HTML Form中的UI組件定義一個Id,并為UI組件定義事件處理。 然而Yii 框架提供了CFormModel 可以支持類似的功能,簡單的 說,通過CFormModel,可以為HTML Form 中的UI小組件定義變量,并且可以在其控制類Controller中訪問這些變量。每個Yii View(Form)一般都提供一個“提交”按鈕(Submit Button),用戶點擊這個“提交按鈕”觸發(fā)CController對象對應的 actionXXX 方法,在actionXXX 方法中可以通過CFormModel來訪問HTML Form的UI組件的值。

前面教程中說過Yii中的模 型(Model)是 CModel 或其子類的實例。模型用于保持數(shù)據(jù)以及與其相關的業(yè)務邏輯,

Yii 實現(xiàn)了兩種類型的模型:表 單模型和 Active Record。二者均繼承于相同的基類 CModel。

表單模型是 CFormModel 的實例。表單模型用于保持從用戶的輸入獲取的數(shù)據(jù)。 這些數(shù)據(jù)經(jīng)常被獲取,使用,然后丟棄。例如,在一個登錄頁面中, 我們可以使用表單模型用于表示由最終用戶提供的用戶名和密碼信息。更多詳情,請參考使用表單。本篇介紹CFormModel的用法,

Active Record (AR) 是一種用于通過面向?qū)ο蟮娘L格抽象化數(shù)據(jù)庫訪問的設計模式。 每個 AR 對象是一個CActiveRecord 或其子類的實例。代表數(shù) 據(jù)表中的一行。 行中的字段對應 AR 對象中的屬性。更多關于 AR 的細節(jié)請閱讀?Active Record. 后面介紹數(shù)據(jù)庫使用時再介紹。

本篇使用一個簡單的登錄界面來介紹FormModel的用法,本例下載。

1. 定義模型類

下面我們創(chuàng)建了一個 LoginForm (protected/models/LoginForm.php) 模型類用于在一個登錄頁中收集用戶的輸入。 由于登錄信息只被用于驗證用戶,并不需要保存,因此我們將 LoginForm 創(chuàng)建為一個 表單模型。

class LoginForm extends
CFormModel    
{    
    public $username;    
    public $password;    
    public $rememberMe=false;    
}

2. 聲明驗證規(guī)則
一旦用戶提交了他的輸入,模型被填充,我們就需要在使用前確保用戶的輸入是有效的。 這是通過將用戶的輸入和一系列規(guī)則執(zhí)行驗證實現(xiàn)的。我們在 rules() 方法中指定這些驗證規(guī)則, 此方法應返回一個規(guī)則配置 數(shù)組。

class LoginForm extends CFormModel    
{    
    public $username;    
    public $password;    
    public $rememberMe=false;    
        
    private $_identity;    
        
    public function rules()    
    {    
        return array(    
            array('username, password', 'required'),    
            array('rememberMe', 'boolean'),    
            array('password', 'authenticate'),    
        );    
    }    
        
    public function authenticate($attribute,$params)    
    {    
        $this->_identity=new UserIdentity($this->username,    
              $this->password);    
        if(!$this->_identity->authenticate())    
            $this->addError('password','錯誤的用戶名或密碼。');    
    }    
}

上述代碼指定:username 和 password 為必填項, password 應被驗證(authenticated),rememberMe 應該是一 個布爾值。

rules() 返回的每個規(guī)則必須是以下格式:

array('AttributeList', 'Validator',
'on'=>'ScenarioList', ...附加選項)

其中 AttributeList(特性列表) 是需要通過此規(guī)則驗證的特性列表字符串,每個特性名字由逗號分隔;Validator(驗證器) 指定要執(zhí)行驗證的種類;on 參數(shù)是可選的,它指定此規(guī)則應被應用到的場景列表; 附加選項是一個名值對數(shù)組,用于初始化相應驗證器的屬性值。

有三種方式可在驗證規(guī)則中指定 Validator 。第一, Validator 可以是模型類中一個方法的名字,就像上面示例中的 authenticate 。驗證方法必須是下面的結(jié)構(gòu):

/**   
 * @param string 所要驗證的特性的名字   
 * @param array 驗證規(guī)則中指定的選項   
 */
public function ValidatorName($attribute,$params) { ... }

第二,Validator 可以是一個驗證器類的名字,當此規(guī)則被應用時, 一個驗證器類的實例將被創(chuàng)建以執(zhí)行實際驗證。規(guī)則中的附加選項用于初始化實例的屬性值。 驗證器類必須繼 承自 CValidator。

第三,Validator 可以是一個預定義的驗證器類的別名。在上面的例子中, required 名字是 CRequiredValidator 的別名,它用于確保所驗證的特性值不為空。 下面是預定義的驗證器別名的完整列表:

boolean: CBooleanValidator 的別名, 確保特性有一個 CBooleanValidator::trueValue 或CBooleanValidator::falseValue 值。

captcha: CCaptchaValidator 的別名,確保特性值等于 CAPTCHA 中顯示的驗證碼。

compare: CCompareValidator 的別 名,確保特性等于另一個特性或常量。

email: CEmailValidator 的別名,確保特性是一個有效的Email地址。

default: CDefaultValueValidator 的別名,指定特性的默認值。

exist: CExistValidator 的別名,確保特性值可以在指定表的列中 可以找到。

file: CFileValidator 的別名,確保特性含有一個上傳文件的名字。

filter: CFilterValidator 的別名,通 過一個過濾器改變此特性。

in: CRangeValidator 的別名,確保數(shù)據(jù)在一個預先指定的值的范圍之內(nèi)。

length: CStringValidator 的別名,確保數(shù)據(jù)的長度在一個指定的范圍之內(nèi)。

match: CRegularExpressionValidator 的別名,確保 數(shù)據(jù)可以匹配一個正則表達式。

numerical: CNumberValidator 的別名,確保數(shù)據(jù)是一個有效的數(shù)字。

required: CRequiredValidator 的別名,確保特性不為空。

type: CTypeValidator 的別名,確保特性是指定的數(shù)據(jù)類型。

unique: CUniqueValidator 的別名,確保數(shù)據(jù)在數(shù)據(jù)表的列中是唯一的。

url: CUrlValidator 的別名,確保數(shù)據(jù)是一個有效的 URL 。

下面我們列出了幾個只用這些預定義驗證器的示例:

// 用戶名為必填項    
array('username', 'required'),    
// 用戶名必須在 3 到 12 個字符之間    
array('username', 'length', 'min'=>3, 'max'=>12),    
// 在注冊場景中,密碼password必須和password2一致。    
array('password', 'compare', 'compareAttribute'=>'password2', 'on'=>'register'),    
// 在登錄場景中,密碼必須接受驗證。    
array('password', 'authenticate', 'on'=>'login'),

3. 安全的特性賦值

在一個類的實例被創(chuàng)建后,我 們通常需要用最終用戶提交的數(shù)據(jù)填充它的特性。 這可以通過如下塊賦值(massive assignment)方式輕松實現(xiàn):

$model=new LoginForm;
if(isset($_POST['LoginForm']))
$model->attributes=$_POST['LoginForm'];最后的表達式被稱作 塊賦值(massive assignment) ,它將 $_POST['LoginForm'] 中的每一項復制到相應的模型特性中。這相當于如下賦值方法:

foreach($_POST
['LoginForm'] as $name=>$value)    
{    
    if($name 是一個安全的特性)    
        $model->$name=$value;    
}

檢測特性的安全非常重要,例如,如果我們以為一個表的主鍵是安全的而暴露了它,那么攻擊者可能就獲得了一個修 改記錄的主鍵的機會, 從而篡改未授權給他的內(nèi)容。

檢測特性安全的策略在版本 1.0 和 1.1 中是不同的,下面我們將 分別講解:

1.1 中的安全特性

在版本 1.1 中,特性如果出現(xiàn)在相應場景的一個驗證規(guī)則中,即被認為是安全的 。 例如:

array('username, password', 'required', 'on'=>'login, register'),
array('email', 'required', 'on'=>'register'),如上所示, username 和 password 特性在 login 場景中是必 填項。而 username, password 和 email 特性在register 場景中是必填項。 于是,如果我們在 login 場景中執(zhí)行塊賦值,就 只有 username 和 password 會被塊賦值。 因為只有它們出現(xiàn)在 login 的驗證規(guī)則中。 另一方面,如果場景是 register , 這三個特性就都可以被塊賦值。

// 在登錄場景中    
$model=new User('login');    
if(isset($_POST['User']))    
    $model->attributes=$_POST['User'];    
        
// 在注冊場景中    
$model=new User('register');    
if(isset($_POST['User']))    
    $model->attributes=$_POST['User'];

那么為什么我們使用這樣一種策略來檢測特性是否安全呢? 背后的基 本原理就是:如果一個特性已經(jīng)有了一個或多個可檢測有效性的驗證規(guī)則,那我們還擔心什么呢?

請記住,驗證規(guī)則是 用于檢查用戶輸入的數(shù)據(jù),而不是檢查我們在代碼中生成的數(shù)據(jù)(例如時間戳,自動產(chǎn)生的主鍵)。 因此,不要 為那些不接受 最終用戶輸入的特性添加驗證規(guī)則。

有時候,我們想聲明一個特性是安全的,即使我們沒有為它指定任何規(guī)則。 例如, 一篇文章的內(nèi)容可以接受用戶的任何輸入。我們可以使用特殊的 safe 規(guī)則實現(xiàn)此目的:

array('content', 'safe')

為了完成起見,還有一個用于聲明一個屬性為不安全的 unsafe 規(guī)則:

array ('permission', 'unsafe')

unsafe 規(guī)則并不常用,它是我們之前定義的安全特性的一個例外 。

1.0 中的安全特性

在版本1.0中,決定一個數(shù)據(jù)項是否是安全的,基于一個名為 safeAttributes 方法的返回值 和數(shù)據(jù)項被指定的場景. 默認的,這個方法返回所有公共成員變量作為 CFormModel 的安全特性,而它也返回了除了主鍵外, 表中 所有字段名作為 CActiveRecord的安全特性.我們可以根據(jù)場景重寫這個方法來限制安全特性 .例如, 一個用戶模型可以包含很 多特性,但是在 login 場景.里,我們只能使用 username 和 password 特性.我們可以按照如下來指定這一限制 :

public function safeAttributes()    
{    
    return array(    
        parent::safeAttributes(),    
        'login' => 'username, password',    
    );    
}safeAttributes 方法更準確的返回值應該是如下結(jié)構(gòu)的 :
array(    
   // these attributes can be massively assigned in any scenario    
   // that is not explicitly specified below    
   'attr1, attr2, ...',    
     *    
   // these attributes can be massively assigned only in scenario 1    
   'scenario1' => 'attr2, attr3, ...',    
     *    
   // these attributes can be massively assigned only in scenario 2    
   'scenario2' => 'attr1, attr3, ...',    
)

如果模型不是場景敏感的(比如,它只在一個場景中使用,或者所有場景共享了一套同樣的安全特性),返 回值可以是如 下那樣簡單的字符串.

'attr1, attr2, ...'

而那些不安全的數(shù)據(jù)項,我們需要使用獨立的賦值語句來分 配它們到相應的特性.如下所示:

$model->permission='admin';    
$model->id=1;4. 觸發(fā)驗證

一旦模型被用戶提交的數(shù)據(jù)填充,我們就可以調(diào)用 CModel::validate() 出發(fā) 數(shù)據(jù)驗證進程。此方法返回一個指示驗證是否成功的值。 對 CActiveRecord 模型來說,驗證也可以在我們調(diào)用其 CActiveRecord::save() 方法時自動觸發(fā)。

我們可以使用 scenario 設置場景屬性,這樣,相應場景的驗證規(guī)則就會被 應用。

驗證是基于場景執(zhí)行的。 scenario 屬性指定了模型當前用于的場景和當前使用的驗證規(guī)則集。 例如,在 login 場景中,我們只想驗證用戶模型中的 username 和 password 輸入; 而在 register 場景中,我們需要驗證更多的輸入,例如 email, address, 等。 下面的例子演示了如何在 register 場景中執(zhí)行驗證:

// 在注冊場景中創(chuàng)建一個  User 模型
。等價于:    
// $model=new User;    
// $model->scenario='register';    
$model=new User('register');    
        
// 將輸入的值填充到模型    
$model->attributes=$_POST['User'];    
        
// 執(zhí)行驗證    
if($model->validate())   // if the inputs are valid    
    ...    
else
    ...規(guī)則關聯(lián)的場景可以通過規(guī)則中的 on 選項指定。如果 on 選項未設置,則此規(guī)則會應用于所有場景。例如:
public function rules()    
{    
    return array(    
        array('username, password', 'required'),    
        array('password_repeat', 'required', 'on'=>'register'),    
        array('password', 'compare', 'on'=>'register'),    
    );    
}

第一個規(guī)則將應用于所有場景,而第二個將只會應用于 register 場景。

5. 提取驗證錯誤

驗證完成 后,任何可能產(chǎn)生的錯誤將被存儲在模型對象中。 我們可以通過調(diào)用 CModel::getErrors()和CModel::getError() 提取這些錯 誤信息。 這兩個方法的不同點在于第一個方法將返回 所有 模型特性的錯誤信息,而第二個將只返回 第一個 錯誤信息。

6. 特性標簽

當設計表單時,我們通常需要為每個表單域顯示一個標簽。 標簽告訴用戶他應該在此表單域中填寫 什么樣的信息。雖然我們可以在視圖中硬編碼一個標簽, 但如果我們在相應的模型中指定(標簽),則會更加靈活方便。

默認情況下 CModel 將簡單的返回特性的名字作為其標簽。這可以通過覆蓋 attributeLabels() 方法自定義。 正如在 接下來的小節(jié)中我們將看到的,在模型中指定標簽會使我們能夠更快的創(chuàng)建出更強大的表單。

7. 創(chuàng)建動作Action方法

創(chuàng)建好LoginForm 表單Model后,我們就可以為它編寫用戶提交后的處理代碼(對應到Controller中的某個Action方法) 。本例使用缺省的SiteController,對應的action為actionLogin.

public function actionLogin()    
{    
    $model=new LoginForm;    
    // collect user input data    
    if(isset($_POST['LoginForm']))    
    {    
        $model->attributes=$_POST['LoginForm'];    
        // validate user input and redirect to the previous page if valid    
        if($model->validate() && $model->login()){    
        
            $this->render('index');    
            return;    
        }    
    }    
    // display the login form    
    $this->render('login',array('model'=>$model));    
}

如上所示,我們首先創(chuàng)建了一個 LoginForm 模型示例; 如果請求是一個 POST 請求(意味著這個登錄表單被提交了 ),我們則使用提交的數(shù)據(jù) $_POST['LoginForm'] 填充 $model ;然后我們驗證此輸入,如果驗證成功,則顯示index 頁面。 如果驗證失敗,或者此動作被初次訪問,我們則渲染 login 視圖。
注意的我們修改了SiteController 的缺省 action為login.

/**   
 * @var string sets the default action to be 'login'   
 */
public $defaultAction='login';

因此用戶見到的第一個頁面為login頁面而非index頁面,只有在用戶輸入正確的用 戶名,本例使用固定的用戶名和密碼,參見UserIdentity類定義,實際應用可以讀取數(shù)據(jù)庫或是LDAP服務器。

/**   
 * 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.   
     */
    public function authenticate()    
    {    
        $users=array(    
            // username => password    
            'demo'=>'demo',    
            'admin'=>'admin',    
        );    
        if(!isset($users[$this->username]))    
            $this->errorCode=self::ERROR_USERNAME_INVALID;    
        else if($users[$this->username]!==$this->password)    
            $this->errorCode=self::ERROR_PASSWORD_INVALID;    
        else
            $this->errorCode=self::ERROR_NONE;    
        return !$this->errorCode;    
    }    
}

讓我們特別留意一下 login 動作中出現(xiàn)的下面的 PHP 語句:

$model->attributes=$_POST ['LoginForm'];

正如我們在 安全的特性賦值 中所講的, 這行代碼使用用戶提交的數(shù)據(jù)填充模型。 attributes 屬性由 CModel定義,它接受一個名值對數(shù)組并將其中的每個值賦給相應的模型特性。 因此如果 $_POST ['LoginForm'] 給了我們這樣的一個數(shù)組,上面的那段代碼也就等同于下面冗長的這段 (假設數(shù)組中存在所有所需的特 性):

$model->username=$_POST['LoginForm']['username'];
$model->password=$_POST ['LoginForm']['password'];
$model->rememberMe=$_POST['LoginForm'] ['rememberMe'];

8. 構(gòu)建視圖

編寫 login 視圖是很簡單的,我們以一個 form 標記開始,它的 action 屬性應該是前面講述的 login 動作的URL。 然后我們需要為 LoginForm 類中聲明的屬性插入標簽和表單域。最后, 我們插入 一個可由用戶點擊提交此表單的提交按鈕。所有這些都可以用純HTML代碼完成。

Yii 提供了幾個助手(helper)類簡化 視圖編寫。例如, 要創(chuàng)建一個文本輸入域,我們可以調(diào)用 CHtml::textField(); 要創(chuàng)建一個下拉列表,則調(diào)用 CHtml::dropDownList()。

信息: 你可能想知道使用助手的好處,如果它們所需的代碼量和直接寫純HTML的代碼量相當?shù)?話。 答案就是助手可以提供比 HTML 代碼更多的功能。例如, 如下代碼將生成一個文本輸入域,它可以在用戶修改了其值時觸 發(fā)表單提交動作。

CHtml::textField($name,$value,array('submit'=>''));

不然的話你就 需要寫一大堆 JavaScript 。

下面,我們使用 CHtml 創(chuàng)建一個登錄表單。我們假設變量 $model 是 LoginForm 的實例 。

<center class="form">    
<?php echo CHtml::beginForm(); ?>    
    <?php echo CHtml::errorSummary($model); ?>
    <center class="row">
        <?php echo CHtml::activeLabel($model,&#39;username&#39;); ?>    
        <?php echo CHtml::activeTextField($model,&#39;username&#39;) ?>    
    </center>
    <center class="row">    
        <?php echo CHtml::activeLabel($model,&#39;password&#39;); ?>    
        <?php echo CHtml::activePasswordField($model,&#39;password&#39;) ?>    
    </center>
    <center class="row rememberMe">    
        <?php echo CHtml::activeCheckBox($model,&#39;rememberMe&#39;); ?>    
        <?php echo CHtml::activeLabel($model,&#39;rememberMe&#39;); ?>    
    </center>
    <center class="row submit">    
        <?php echo CHtml::submitButton(&#39;Login&#39;); ?>    
    </center>
<?php echo CHtml::endForm(); ?>    
</center><!-- form -->

上述代碼生成了一個更加動態(tài)的表單,例如, CHtml::activeLabel() 生成一個與 指定模型的特性相關的標簽。 如果此特性有一個輸入錯誤,此標簽的CSS class 將變?yōu)?error,通過 CSS 樣式改變了標簽的外 觀。 相似的,CHtml::activeTextField() 為指定模型的特性生成一個文本輸入域,并會在錯誤發(fā)生時改變它的 CSS class。

如果我們使用由 yiic 腳本生提供的 CSS 樣式文件,生成的表單就會像下面這樣:

573.png

CSS 樣式定義在css目錄下,本例使用的為Yii缺省的樣式。

從版本 1.1.1 開始,提供了一個新的小物件 CActiveForm 以簡化表單創(chuàng)建。 這個小物件可同時提供客戶端及服務器端無縫的、一致的驗證。使用 CActiveForm, 上面的代 碼可重寫為:

<center class="form">    
<?php $form=$this->beginWidget(&#39;CActiveForm&#39;); ?>    
         
    <?php echo $form->errorSummary($model); ?>    
         
    <center class="row">    
        <?php echo $form->label($model,&#39;username&#39;); ?>    
        <?php echo $form->textField($model,&#39;username&#39;) ?>    
    </center>    
         
    <center class="row">    
        <?php echo $form->label($model,&#39;password&#39;); ?>    
        <?php echo $form->passwordField($model,&#39;password&#39;) ?>    
    </center>    
         
    <center class="row rememberMe">    
        <?php echo $form->checkBox($model,&#39;rememberMe&#39;); ?>    
        <?php echo $form->label($model,&#39;rememberMe&#39;); ?>    
    </center>    
         
    <center class="row submit">    
        <?php echo CHtml::submitButton(&#39;Login&#39;); ?>    
    </center>    
         
<?php $this->endWidget(); ?>    
</center><!-- form -->

從下篇開始將逐個介紹Yii框架支持的UI組件包括CActiveForm的用法。

以上就是PHP開發(fā)框架Yii Framework教程(8) 使用FormModel的內(nèi)容,更多相關內(nèi)容請關注PHP中文網(wǎng)(miracleart.cn)!


本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

如何在 Windows 11/10 上使用 SetupDiag 識別 Windows 升級問題 如何在 Windows 11/10 上使用 SetupDiag 識別 Windows 升級問題 Apr 17, 2023 am 10:07 AM

每當您的Windows11或Windows10PC出現(xiàn)升級或更新問題時,您通常會看到一個錯誤代碼,指示故障背后的實際原因。但是,有時,升級或更新失敗可能不會顯示錯誤代碼,這時就會出現(xiàn)混淆。有了方便的錯誤代碼,您就可以確切地知道問題出在哪里,因此您可以嘗試修復。但是由于沒有出現(xiàn)錯誤代碼,因此識別問題并解決它變得極具挑戰(zhàn)性。這會占用您大量時間來簡單地找出錯誤背后的原因。在這種情況下,您可以嘗試使用Microsoft提供的名為SetupDiag的專用工具,該工具可幫助您輕松識別錯誤背后的真

Microsoft NET Framework 安裝問題 錯誤代碼 0x800c0006 修復 Microsoft NET Framework 安裝問題 錯誤代碼 0x800c0006 修復 May 05, 2023 pm 04:01 PM

.NETFramework4是開發(fā)人員和最終用戶在Windows上運行最新版本的應用程序所必需的。但是,在下載安裝.NETFramework4時,許多用戶抱怨安裝程序在中途停止,顯示以下錯誤消息-“?.NETFramework4hasnotbeeninstalledbecauseDownloadfailedwitherrorcode0x800c0006?”。在您的設備上安裝.NETFramework4時,如果您也在體驗它,那么您就來對了地方

SCNotification 已停止工作 [修復它的 5 個步驟] SCNotification 已停止工作 [修復它的 5 個步驟] May 17, 2023 pm 09:35 PM

作為Windows用戶,您很可能會在每次啟動計算機時遇到SCNotification已停止工作錯誤。SCNotification.exe是一個微軟系統(tǒng)通知文件,由于權限錯誤和點網(wǎng)故障等原因,每次啟動PC時都會崩潰。此錯誤也以其問題事件名稱而聞名。因此,您可能不會將其視為SCNotification已停止工作,而是將其視為錯誤clr20r3。在本文中,我們將探討您需要采取的所有步驟來修復SCNotification已停止工作,以免它再次困擾您。什么是SCNotification.e

Microsoft .NET Framework 4.5.2、4.6 和 4.6.1 將于 2022 年 4 月終止支持 Microsoft .NET Framework 4.5.2、4.6 和 4.6.1 將于 2022 年 4 月終止支持 Apr 17, 2023 pm 02:25 PM

已安裝Microsoft.NET版本4.5.2、4.6或4.6.1的MicrosoftWindows用戶如果希望Microsoft將來通過產(chǎn)品更新支持該框架,則必須安裝較新版本的Microsoft框架。據(jù)微軟稱,這三個框架都將在2022年4月26日停止支持。支持日期結(jié)束后,產(chǎn)品將不會收到“安全修復或技術支持”。大多數(shù)家庭設備通過Windows更新保持最新。這些設備已經(jīng)安裝了較新版本的框架,例如.NETFramework4.8。未自動更新的設備可能

Yii2 vs Phalcon:哪個框架更適合開發(fā)顯卡渲染應用? Yii2 vs Phalcon:哪個框架更適合開發(fā)顯卡渲染應用? Jun 19, 2023 am 08:09 AM

在當前信息時代,大數(shù)據(jù)、人工智能、云計算等技術已經(jīng)成為了各大企業(yè)關注的熱點。在這些技術中,顯卡渲染技術作為一種高性能圖形處理技術,受到了越來越多的關注。顯卡渲染技術被廣泛應用于游戲開發(fā)、影視特效、工程建模等領域。而對于開發(fā)者來說,選擇一個適合自己項目的框架,是一個非常重要的決策。在當前的語言中,PHP是一種頗具活力的語言,一些優(yōu)秀的PHP框架如Yii2、Ph

適用于 Windows 11 的KB5012643破壞了.NET Framework 3.5應用程序 適用于 Windows 11 的KB5012643破壞了.NET Framework 3.5應用程序 May 09, 2023 pm 01:07 PM

自我們談論影響安裝KB5012643forWindows11的用戶的新安全模式錯誤以來已經(jīng)過去了一周。這個討厭的問題并沒有出現(xiàn)在微軟在發(fā)布當天發(fā)布的已知問題列表中,因此讓所有人都感到意外。好吧,就在您認為情況不會變得更糟的時候,微軟為安裝此累積更新的用戶投下了另一顆炸彈。Windows11Build22000.652導致更多問題因此,這家科技公司警告Windows11用戶,他們在啟動和使用某些.NETFramework3.5應用程序時可能會遇到問題。聽起來很熟悉?不過請不要驚

Yii框架中的數(shù)據(jù)查詢:高效地訪問數(shù)據(jù) Yii框架中的數(shù)據(jù)查詢:高效地訪問數(shù)據(jù) Jun 21, 2023 am 11:22 AM

Yii框架是一個開源的PHPWeb應用程序框架,提供了眾多的工具和組件,簡化了Web應用程序開發(fā)的流程,其中數(shù)據(jù)查詢是其中一個重要的組件之一。在Yii框架中,我們可以使用類似SQL的語法來訪問數(shù)據(jù)庫,從而高效地查詢和操作數(shù)據(jù)。Yii框架的查詢構(gòu)建器主要包括以下幾種類型:ActiveRecord查詢、QueryBuilder查詢、命令查詢和原始SQL查詢

php如何使用Yii3框架? php如何使用Yii3框架? May 31, 2023 pm 10:42 PM

隨著互聯(lián)網(wǎng)的不斷發(fā)展,Web應用程序開發(fā)的需求也越來越高。對于開發(fā)人員而言,開發(fā)應用程序需要一個穩(wěn)定、高效、強大的框架,這樣可以提高開發(fā)效率。Yii是一款領先的高性能PHP框架,它提供了豐富的特性和良好的性能。Yii3是Yii框架的下一代版本,它在Yii2的基礎上進一步優(yōu)化了性能和代碼質(zhì)量。在這篇文章中,我們將介紹如何使用Yii3框架來開發(fā)PHP應用程序。

See all articles