0

私はアプリケーションを開発しており、フォームを編集する場合は入力されるが、フォームが新しいエントリになる場合は入力されないフォームを表示したいと考えています。これを行う最も冗長な方法は、フォームを 1 つだけ使用し、変数をエコーするためのエラーを抑制して、新しいフォームの場合は何も出力されないようにすることだと思います (新しいフォームの場合は変数が存在しないため)。 . 例えば:

<?php 
if ( ! $new_item) {
    $variable = 'Example';
}
?>
<form>
    <input type="text" name="inputbox" value="<?php echo @$variable; ?>" />
</form>

これは良い習慣ですか、それとももっと良い方法がありますか? 新しいアイテムと編集するアイテムで別々のビューを作成する必要がありますか? これを行うと、パフォーマンスにどのような影響がありますか?

4

3 に答える 3

4

使用できます

<?php echo ((isset($value) && $value != '') ? $value : 'Default'); ?>

この問題に対するより明確な解決策は、これを行うヘルパー関数を作成することです。

function useDefault($value, $default = '')
{
    if (isset($value) && $value != '')
    {
        return $value;
    }
    else
    {
        return $default;
    }
}

その後、使用できます

<?php echo useDefault($value, 'default value'); ?>
于 2008-11-25T11:32:17.440 に答える
2

私はよく使う:

$variable = (isset($new_item) && $new_item) ? 'Example' : 'Default Value';

本当にやり過ぎですが、設定されていない場合は !$new_item に直行すると通知がスローされると思います。必要な動作に応じて、!empty($new_item) の 2 番目の句を切り替えることもできます。

于 2008-11-25T11:03:41.913 に答える
1

最善の方法は、常に変数を設定することだと思います

if ( ! $new_item) {
    $variable = 'Example';
} else {
    $variable = 'Default value'; 
    //or
    $variable = '';
}

@エラー抑制の使用は遅いです。

edithtmlentities()変数を入力値属性に出力するときは、最初にorを 呼び出す必要があることに注意してくださいhtmlspecialchars()

2回目の編集

コメントで、オブジェクトとしてデータを取得していると言っています。その場合、次のこともできます。

class example {
    public $somefield = 'default value';
}

次に、編集している既存のレコードである場合は、次のようにします。これにより、返されるオブジェクトが「example」のインスタンスになります。

$record = mysql_fetch_object($result, 'example');

または、それが新しいレコードの場合は、自分でインスタンス化します:

$record = new example(); 

次に、設定されることを常に知って$record->somefieldおり、次のことができます。

<form>
    <input type="text" name="somefield" value="<?php echo htmlspecialchars($record->somefield); ?>" />
</form>
于 2008-11-25T10:59:58.910 に答える