建立一个法庭管理系统,让一个人能够查看与某个案件有关的图像和视频
我有两个相关的表,即案例和证据表
关系
证据模型代码:
public function getCaseRef()
{
return $this->hasOne(Cases::className(), ['ref_no' => 'case_ref']);
}
public function rules()
{
return [
[['case_ref', 'saved_by', 'saved_on', 'evidence_type'], 'required'],
[['saved_on'], 'safe'],
[['path'], 'safe'],
[['case_ref', 'saved_by'], 'string', 'max' => 100],
[['evidence_type'], 'string', 'max' => 50],
[['path'], 'file']
];
}
案例模型代码:
public function getEvidences()
{
return $this->hasMany(Evidence::className(), ['case_ref' => 'ref_no']);
}
上传效果很好,我用案例参考号保存证据。证据模型中的路径是我保存图像上传到的位置的路径。
在案例控制器的动作视图中
public function actionView($id)
{
$evidence = new Evidence();
return $this->render('view', [
'model' => $this->findModel($id),
'id'=>$id,'evidence'=>$evidence,
]);
}
如何放置我的视图模型,以便显示存储在文件夹中的images / videos / pdf文件(对应于在使用路径点击期间传递的id即$ id存储在数据库证据表中
答案 0 :(得分:1)
如果文件夹在var myFolder中,并且模型中var myFilename中的文件名,您可以轻松地使用它来查看图像和视频,将proer值添加到相关的attribut
echo "<img src='". $model->myFolder . $model->myFilename . "' >";
echo " <video width='320' height='240' controls>
<source src='" . $model->myFolder . $model->myFilename ."'type='video/mp4'>
Your browser does not support the video tag.
</video> "
对于pdf,您应该使用适当的扩展名,如mpdf,或者如果您正确设置了mime,则使用相同的规则构建简单的链接
如果您有足够的证据与案件证据相关,则该证据将在具有许多实例的对象中提供,或者在具有许多实例的相关细节中提供。要处理这种情况就足以让你在这些istances(子模型或子对象)上进行foreach循环,并且每个都会产生回声,如答案的第一部分所示。