5

TypoScript などで数字と文字の混合文字列を自動生成することは可能12A54ですか?

4

3 に答える 3

7

私はphpインクルードスクリプトよりもuserFuncを好むでしょう。たとえば、パラメーターをユーザー関数に渡すことができます。

タイポスクリプト:

includeLibs.generateInvoiceNo= fileadmin/scripts/generateInvoiceNo.php
temp.invoiceNo = USER
temp.invoiceNo {
  userFunc =user_generateInvoiceNo->main
}

PHP:
fileadmin/scripts/generateInvoiceNo.php

<?
class user_generateInvoiceNo {
    var $cObj;// The backReference to the mother cObj object set at call time
    /**
    * Call it from a USER cObject with 'userFunc = user_generateInvoiceNo->main'
    */
    function main($content,$conf){
        $length = 6;
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $number=substr(str_shuffle($chars),0,$length);
        return $number;
    }
}
?>

クレジット:

于 2012-10-21T13:36:44.320 に答える
5

すでに述べたように、Typoscript にはそのような機能がないため、の回答で提案されている単純な PHP 関数を使用することをお勧めします。

ただし、MySQL を使用するというチートがあります。カスタム PHP の一部を作成することが絶対にできない場合 (私が本当に考えられない理由で) にのみ解決策であることを覚えておいてください。実用的なものではなく、学術的な答えとして考えてください。

temp.random = CONTENT
temp.random {
  table = tt_content
  select {
    pidInList = 1
    recursive = 99
    max = 1
    selectFields = SUBSTRING(MD5(RAND()) FROM 1 FOR 6) AS random_string
  }
  renderObj = TEXT
  renderObj {
    field = random_string
    case = upper
  }
}

ノート:

  1. pidInList既存のページを指す必要があります。
  2. 文字列に GZ の文字が含まれることはないため、MySQL コマンドは単なる例にすぎません。MySQL によって生成されたより良い文字列を考え出すことは可能だと確信しています。
于 2012-10-19T12:33:07.220 に答える
3

そのような簡単なタスクのために TYPO3 ソースにパッチを当てるのは間違った考えです。次回のソースのアップグレード後、変更は失われます。

代わりに、必要なものをレンダリングできる簡単な PHP スクリプトを含めることをお勧めします。TSREF を確認してください。

于 2012-10-19T11:45:34.367 に答える