d3yii2 / d3codes
代码
dev-master
2024-09-16 05:44 UTC
Requires
- d3yii2/d3system: dev-master
- tomaszdurka/php-exec: dev-master
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2024-09-16 05:45:42 UTC
README
功能
作为Yii2模块创建。实际上生成条形码,同时可以轻松实现二维码功能。
- 通过前缀和区间定义代码系列
- 从系列创建代码并分配给活动记录
- 读取代码并分配给活动记录
- 标签布局
- 在Windows服务器上打印标签
数据库模式
安装
安装此扩展的首选方式是通过 composer。
运行以下命令
$ composer require d3yii2/d3codes "*"
或在您的 composer.json
文件的 require
部分添加以下内容:
"d3yii2/d3codes": "*"
配置
记录器和读取器
记录器从定义的系列生成新条形码。对于不同类型,定义不同的组件。
'components' => [ 'palletCodeRecorder' => [ 'class' => 'd3yii2\d3codes\components\CodeRecorder', 'codeName' => 'pallets bar code', 'series' => [ 'p01' => [ 'prefix' => 'p01', 'length' => 5, 'from' => 1, 'to' => 20000 ] ], 'modelClass' => 'wood\clasifiers\models\Pallet', 'componentsSysModel' => 'sysModel' ], 'codeReader' => [ 'class' => 'd3yii2\d3codes\components\CodeReader', 'modelClassList' => [ 'wood\clasifiers\models\Pallet' ], 'componentsSysModel' => 'sysModel' ], ]
打印机
用于从Windows服务器直接打印。使用Chrome进行PDF转换,并使用PDFtoPrinter打印 http://www.columbia.edu/~em36/pdftoprinter.html
将存储库添加到composer: https://github.com/uldisn/php-exec.git
"repositories": [ { "type": "vcs", "url": "https://github.com/uldisn/php-exec.git" },
# Bar code printer
BOUNCER_PRINTER=BouncerPrinter
PDFtoPrinter=H:\yii2\cewood\PDFtoPrinter.exe
# chrome
CHROME_PATH=C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
用法
为模型创建新条形码
$paletBarCode = \Yii::$app->palletCodeRecorder->createNewRecord($palletModelId);
通过条形码查找模型
$palletModel = \Yii::$app->palletCodeRecorder->codeReader($barcodeReadedByBarCodeScaner);
将创建的代码分配给其他模型记录
Yii::$app->packCodeRecorder->assignCodeToOtherRecord($outPackId, $packCode);
将代码作为属性添加到模型中
- 查找代码,如果代码已附加
- 创建新代码并附加,如果未附加代码
class BtlinePp extends BaseBtlinePp { public function rules() { return array_merge(parent::rules(),[ ['code','safe'] ]); } public function attributeLabels() { return array_merge(parent::attributeLabels(),[ 'code' => 'Code' ]); } /** * @return string * @throws D3ActiveRecordException */ public function getCode(): string { return Yii::$app->ppCodeRecorder->getCodeOrCreate($this->id); } }
通过打印机打印条形码
use d3yii2\d3codes\actions\PrintCode; class BatchController { public function actions() { $OC = $this; return [ 'pp-print-barcode' => [ 'class' => PrintCode::class, 'componentRecorderName' => 'ppCodeRecorder', 'layout' => '@layout_barcode', 'view' => 'print_barcode', 'data' => static function(int $id) use ($OC){ return [ 'model' => $OC->findModel($id), ]; } ], ]; } }
在控制器和表单中读取
在表单中使用模型 d3yii2\d3codes\models\CodeReader。
控制器
use d3yii2\d3codes\models\CodeReader; $codeReaderModel = new CodeReader(); $codeReaderModel->componentCodeReaderName = 'codeReader'; $post = Yii::$app->request->post(); if($post && $codeReaderModel->load(Yii::$app->request->post())){ /** @var CwpalletPallet $palletModel */ $palletModel = $codeReaderModel->model; } if ($codeReaderModel->hasErrors()) { FlashHelper::modelErrorSummary($codeReaderModel); } return $this->render('manufacturing', [ 'packList' => $searchModel ->manufacturedPacks(true) ->all(), 'packId' => $packId, 'codeReaderModel' => $codeReaderModel ]);
表单
$form = ActiveForm::begin([ 'id' => 'BauncerCodeReading', 'enableClientValidation' => false, 'errorSummaryCssClass' => 'error-summary alert alert-error', 'fieldConfig' => [ 'template' => "{label}\n{beginWrapper}\n{input}\n{error}\n{endWrapper}", ], ]); echo $form ->field( $codeReaderModel, 'code', [ 'inputOptions' => [ 'autofocus' => 'autofocus', 'class' => 'form-control', 'tabindex' => '1' ] ]) ->textInput() ->label(''); echo ThButton::widget([ 'label' => 'Process', 'id' => 'saveCode', 'icon' => ThButton::ICON_CHECK, 'type' => ThButton::TYPE_SUCCESS, 'submit' => true, 'htmlOptions' => [ 'name' => 'action', 'value' => 'save', ], ]); ActiveForm::end();
从服务器打印
try { $url = Yii::$app->urlManager->createAbsoluteUrl([ '/cwstore/pack/print-barcode', 'id' => $id ]); if(Yii::$app->bouncerPrinter->print($url)){ FlashHelper::addSuccess('Etiķete nosūtīta uz izsitēja printera'); }else{ FlashHelper::addDanger('Radās kļūda drukājot etiķeti'); } } catch (Exception $e) { FlashHelper::processException($e); }
SQL连接
$sql = 'SELECT cwat_pack.cwat_pack, d3codes_code_record.full_code FROM cwat_pack LEFT OUTER JOIN `d3codes_code_record` ON cwat_pack.id = d3codes_code_record.`model_record_id` AND d3codes_code_record.`model_id` = '.\d3system\dictionaries\SysModelsDictionary::getIdByClassName(CwatPack::class).' AND d3codes_code_record.`code_id` = '.Yii::$app->packAtlCodeRecorder->codeId ';